PCA et forêts aléatoires

12

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?

Vishal
la source
2
Avez-vous normalisé vos données avant d'exécuter PCA? Si je devais deviner, je pense que l'une de vos fonctionnalités était à une échelle beaucoup plus grande que les autres ...
Marc Shivers
1
La fonction PCA normalise automatiquement tout lors du calcul.
Vishal
1
C'est peut-être juste moi, mais pourriez-vous clarifier ce qui suit: votre première étape a consisté à ajouter 10 fonctionnalités (brutes), une à la fois, ou avez-vous travaillé directement avec des composants PCA? Comme indiqué, je comprends que c'est le premier cas et vous vous demandez si vous pouvez travailler directement avec les résultats de l'ACP. Dans les deux cas, avez-vous appliqué l'ACP à toutes les variables, y compris les nouvelles fonctionnalités, ou juste à la dernière?
chl
J'ai appliqué le PCA à la matrice d'origine avec les 10 fonctionnalités supplémentaires. J'ai ensuite formé le classificateur, en ajoutant une fonctionnalité à la fois, afin de pouvoir mesurer l'amélioration incrémentielle fournie avec l'ajout de chaque fonctionnalité. Ma question était de savoir si je transformais l'ensemble de données (avec les 10 nouvelles fonctionnalités) dans l'espace PCA, puis exécutais le classificateur directement sur l'ensemble de données dans l'espace PCA
Vishal

Réponses:

7

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.

Parkes de karité
la source
"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 de la puissance prédictive des fonctionnalités dans leur ensemble." Cela n'a jamais été le but, et cela entraînerait un classificateur très confus! L'objectif était de disposer d'une gamme de fonctionnalités, illustrant toutes différents aspects de l'ensemble de données, dans le but de réduire l'erreur de généralisation. Le point de prendre le PCA était de voir à quel point les fonctionnalités étaient différentes. Et mon point de vue était que mes fonctionnalités n'étaient pas si différentes, mais les résultats de la RF s'amélioraient toujours.
Vishal
1
La même logique peut toujours s'appliquer. Une nouvelle fonctionnalité est hautement colinéaire avec une fonctionnalité antérieure qui peut encore apporter plus de puissance prédictive. Spécifiquement pour un randomForest: si la fonctionnalité de quasi-duplication est importante en général, une version ou une autre est désormais plus susceptible d'être sélectionnée en tant que candidats de fractionnement.
Shea Parkes
Cela soulève la question suivante, comment sélectionnez-vous a priori les fonctionnalités de votre classificateur de forêts aléatoires pour améliorer la classification, sans réellement exécuter le classificateur? Existe-t-il un processus de sélection? Comment faites-vous? :)
Vishal
Je ne connais aucune méthode de sélection a priori utile. Vous pouvez faire de nombreuses boucles imbriquées d'importance et de sélection via certains packages R comme 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.
Shea Parkes
1
Vous pourriez a priori calculer certaines mesures de séparabilité pour vos classes en fonction de vos caractéristiques (distance Jeffries-Matusita, divergence, etc.). Cela pourrait vous aider à comprendre en général quelles fonctionnalités vous aident à distinguer les classes, mais en raison du fonctionnement de la RF, il n'est pas facile de choisir ici les fonctionnalités qui offrent le meilleur ensemble pour la classification. Un obstacle clair ici est que RF trouve des interactions variables par lui-même.
JEquihua
6

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.

Michael R. Chernick
la source
3
"En fait, nous avons récemment discuté d'un document sur le CV où PCA" avez-vous un lien vers cela? Je suis très intéressé :)
user603
Je vais chercher la discussion.
Michael R. Chernick
Serez-vous si gentil de jeter un œil à la question connexe ?
nadya