Pour un récent concours Kaggle, j'ai (manuellement) défini 10 fonctionnalités supplémentaires pour mon ensemble d'entraînement, qui seraient ensuite utilisées pour former un classificateur de forêts aléatoires. J'ai décidé d'exécuter PCA sur l'ensemble de données avec les nouvelles fonctionnalités, pour voir comment elles se comparaient les unes aux autres. J'ai trouvé que ~ 98% de la variance était portée par le premier composant (le premier vecteur propre). J'ai ensuite formé le classificateur plusieurs fois, en ajoutant une fonction à la fois, et j'ai utilisé la validation croisée et l'erreur RMS pour comparer la qualité de la classification. J'ai trouvé que les classifications s'amélioraient avec chaque fonctionnalité supplémentaire et que le résultat final (avec les 10 nouvelles fonctionnalités) était bien meilleur que la première exécution avec (disons) 2 fonctionnalités.
Étant donné que l'ACP a prétendu que ~ 98% de la variance concernait la première composante de mon ensemble de données, pourquoi la qualité des classifications s'est-elle tant améliorée?
Cela serait-il vrai pour les autres classificateurs? Les RF évoluent sur plusieurs cœurs, il est donc beaucoup plus rapide de s'entraîner que (disons) SVM.
Et si j'avais transformé le jeu de données dans l'espace "PCA" et exécuté le classificateur sur l'espace transformé. Comment mes résultats changeraient-ils?
la source
Réponses:
Lorsque vous effectuez une modélisation prédictive, vous essayez d'expliquer la variation de la réponse, pas la variation des caractéristiques. Il n'y a aucune raison de croire que le fait d'entasser autant de variations de fonctionnalités dans une seule nouvelle fonctionnalité capturera une grande partie du pouvoir prédictif des fonctionnalités dans leur ensemble.
Ceci est souvent expliqué comme la différence entre la régression des composants principaux au lieu des moindres carrés partiels.
la source
Boruta
. Je ne les ai pas non plus trouvés utiles. Je trouve déraisonnable de croire qu'une fonction donnée n'a aucun effet. Je peux croire que mettre l'accent sur certaines fonctionnalités plutôt que sur d'autres pourrait être utile, mais l'algorithme de base randomForest le fait déjà assez bien. Si vous êtes si profond dans la modélisation et que vous souhaitez plus de performances, je suggère d'empiler d'autres algorithmes, certains comme des arbres boostés, avec votre randomForest.Le premier composant principal est une combinaison linéaire de toutes vos fonctionnalités. Le fait qu'il explique presque toute la variabilité signifie simplement que la plupart des coefficients des variables de la première composante principale sont significatifs.
Maintenant, les arbres de classification que vous générez sont un peu un animal différent aussi. Ils effectuent des séparations binaires sur des variables continues qui séparent au mieux les catégories que vous souhaitez classer. Ce n'est pas exactement la même chose que de trouver des combinaisons linéaires orthogonales de variables continues qui donnent la direction de la plus grande variance. En fait, nous avons récemment discuté d'un article sur le CV dans lequel l'ACP a été utilisée pour l'analyse des grappes et les auteurs ont constaté qu'il existe des situations où la meilleure séparation se trouve non pas dans les premières composantes principales mais plutôt dans les dernières.
la source