J'essaie de faire des prédictions en utilisant un modèle de forêt aléatoire dans R.
Cependant, je reçois des erreurs car certains facteurs ont des valeurs différentes dans l'ensemble de test que dans l'ensemble d'entraînement. Par exemple, un facteur Cat_2
a des valeurs 34, 68, 76
, etc., dans l'ensemble de test qui n'apparaissent pas dans l'ensemble d'apprentissage. Malheureusement, je n'ai aucun contrôle sur l'ensemble de test ... Je dois l'utiliser tel quel.
Ma seule solution de contournement a été de reconvertir les facteurs problématiques en valeurs numériques, en utilisant as.numeric()
. Cela fonctionne mais je ne suis pas très satisfait, car ces valeurs sont des codes qui n'ont aucun sens numérique ...
Pensez-vous qu'il y aurait une autre solution, pour supprimer les nouvelles valeurs de l'ensemble de test? Mais sans supprimer toutes les autres valeurs de facteur (disons les valeurs1, 2, 14, 32
, etc.) qui sont à la fois dans la formation et le test, et contient des informations potentiellement utiles pour les prévisions.
la source
Réponses:
Si l'ensemble de test contient beaucoup de ces points avec de nouvelles valeurs de facteur, je ne sais pas quelle est la meilleure approche. S'il ne s'agit que de quelques points, vous pourrez peut-être vous en sortir avec quelque chose de flou, comme traiter les niveaux de facteur erronés comme des données manquantes et les imputer avec l'approche que vous jugerez appropriée. L'implémentation R a deux façons d'imputer les données manquantes, il vous suffit de définir ces niveaux de facteur sur NA pour indiquer qu'ils sont manquants.
la source
King et Bonoit , cet extrait peut être utile pour harmoniser les niveaux:
Il imprime également les attributs modifiés. Je n'ai pas trouvé un bon moyen de l'écrire plus élégamment (avec ldply ou quelque chose). Tous les conseils sont appréciés.
la source
Voici un code que j'ai écrit qui répond à la réponse de @ King ci-dessus. Il a corrigé l'erreur:
la source
L'ensemble de test et de formation doit être combiné en un seul ensemble, puis modifier les niveaux de l'ensemble de formation. Mes codes sont:
Cela fonctionne dans tous les cas où le nombre de niveaux dans le test est plus ou moins que la formation.
la source
J'ai une solution de contournement moche lorsque j'utilise randomForest dans R. Ce n'est probablement pas théoriquement sain, mais cela fait fonctionner la chose.
ou l'inverse. Fondamentalement, cela donne juste à R une valeur valide juste qu'il y a 0 cas; alors arrêtez de m'embêter sur l'erreur.
Je ne suis pas assez intelligent pour le coder de sorte qu'il exécute automatiquement l'action pour toutes les fonctionnalités catégorielles. Envoyez-moi le code si vous savez comment ...
la source
Je suis sûr que vous auriez déjà pensé à cela si c'était le cas, mais si l'ensemble de test a des valeurs réelles et que vous utilisez l'ensemble de test à des fins de validation croisée, puis divisez à nouveau la trame de données en cadres de données de formation et de test où les deux sont équilibrés sur ces facteurs éviterait votre problème. Cette méthode est connue sous le nom de validation croisée stratifiée .
la source