Utilisation de l’analyse en composantes principales (PCA) pour la sélection des fonctionnalités

54

Je suis nouveau dans la sélection de fonctionnalités et je me demandais comment vous utiliseriez PCA pour sélectionner des fonctionnalités. La PCA calcule-t-elle un score relatif pour chaque variable d'entrée que vous pouvez utiliser pour filtrer les variables d'entrée non informatives? En gros, je veux pouvoir classer les caractéristiques d'origine dans les données par variance ou par quantité d'informations contenues.

Michael
la source

Réponses:

75

L'idée de base lorsque vous utilisez PCA comme outil de sélection de caractéristiques est de sélectionner des variables en fonction de la magnitude (du plus grand au plus petit en valeur absolue) de leurs coefficients ( chargements ). Vous vous souviendrez peut-être que la PCA cherche à remplacer les variables (plus ou moins corrélées) par k < p combinaisons linéaires non corrélées (projections) des variables d'origine. Ignorons comment choisir un k optimal pour le problème à résoudre. Ces k composantes principales sont classées par importance en fonction de leur variance expliquée, et chaque variable contribue avec un degré variable à chaque composante. L'utilisation du critère de variance le plus élevé s'apparenterait à l' extraction de caractéristiquespk<pkk , où les composants principaux sont utilisés en tant que nouvelles fonctionnalités au lieu des variables d'origine. Cependant, nous pouvons décider de ne conserver que le premier composant et de sélectionner les variables ayant le coefficient absolu le plus élevé; le nombre j peut être basé sur la proportion du nombre de variables (par exemple, ne conserver que les 10% supérieurs des p variables), ou un seuil fixe (par exemple, en considérant un seuil sur les coefficients normalisés). Cette approche ressemble quelque peu à l' opérateur de Lasso dans la régression pénalisée (ou régression PLS ). Cependant, ni la valeur de j , ni le nombre de composants à conserver ne sont des choix évidents.j<pjpj

Le problème avec l’ACP est que (1) les mesures de toutes les variables originales sont utilisées dans la projection dans l’espace dimensionnel inférieur, (2) seules les relations linéaires sont prises en compte, et (3) les méthodes basées sur la PCA ou la SVD, ainsi que en tant que méthodes de filtrage univariées (test t, corrélation, etc.), ne tiennent pas compte de la nature multivariée potentielle de la structure de données (par exemple, une interaction d'ordre supérieur entre variables).

À propos du point 1, certaines méthodes de criblage plus élaborées ont été proposées, par exemple l’ analyse des caractéristiques principales ou une méthode par étapes, comme celle utilisée pour le « rasage de gène » dans les études d’expression génique. De plus, une analyse PCA fragmentée peut être utilisée pour effectuer une réduction de dimension et une sélection de variables en fonction des chargements variables résultants. À propos du point 2, il est possible d’utiliser PCA du noyau (en utilisant l’ astuce du noyau ) s’il est nécessaire d’incorporer des relations non linéaires dans un espace de dimension inférieure. Les arbres de décision , ou mieux l’ algorithme de forêt aléatoire , sont probablement mieux à même de résoudre le point 3. Ce dernier permet de dériver des mesures d’ importance variable basées sur le gin ou par permutation .

Un dernier point: si vous avez l'intention de sélectionner des caractéristiques avant d'appliquer un modèle de classification ou de régression, assurez-vous de valider le processus dans son ensemble (voir le §7.10.2 des Eléments de l'apprentissage statistique ou Ambroise et McLachlan, 2002 ).


Comme vous semblez être intéressé par la solution R, je vous recommanderais de jeter un coup d'œil au paquet caret , qui comprend de nombreuses fonctions pratiques pour le prétraitement des données et la sélection de variables dans un contexte de classification ou de régression.

chl
la source
1
Il y a beaucoup de bonnes informations ici, mais je suis surpris qu'il ne soit pas question d'EPT. Je pense que l’analyse factorielle est appropriée pour la sélection des fonctionnalités / la réduction de la dimensionnalité, et l’ACP n’est vraiment appropriée que pour la nouvelle représentation de vos données, de sorte que les variables ne soient pas corrélées. Je suppose que tu n'es pas d'accord?
gung - Réintégrer Monica
3
np
C'est clairement une question nuancée et difficile. Comme vous en savez beaucoup plus que moi, votre opinion m'intéressait. +1, btw.
gung - Réintégrer Monica
2
Deux commentaires Tout d’abord, vous mentionnez kPCA comme une solution possible à votre question 2. Mais comment utiliser kPCA pour la sélection des fonctionnalités, lorsque les vecteurs propres / les chargements ne sont pas disponibles là? Il y a une question supplémentaire à ce sujet, et j'ai soutenu que cela ne pouvait pas . Deuxièmement, votre deuxième avant-dernier paragraphe pourrait beaucoup s’améliorer si vous mentionniez LASSO, en tant que moyen privilégié (?) De sélectionner des fonctionnalités dans une régression. Ce fil reste très populaire et de nombreuses questions sont fermées car il s'agit de doublons. Il est donc important que votre réponse soit aussi excellente que possible!
amibe dit de réintégrer Monica le
@ chl, merci pour votre réponse informative. Vous parlez de "décider de ne garder que le premier composant". Pourquoi seulement le premier composant? Avec un composant, il est facile de classer les caractéristiques / variables. Comment feriez-vous cela avec plusieurs composants, disons 3? Comment classer les variables entre les composants? Je suppose que vous pouvez passer en revue chaque composant principal et choisir la fonctionnalité ayant le chargement le plus important de ce composant principal, parmi l'ensemble des fonctionnalités qui n'ont pas encore été sélectionnées. Ceux-ci peuvent à nouveau être sélectionnés par un nombre (j) ou par un seuil de coefficients normalisés. Êtes-vous d'accord?
Sother
6

Avec une série de N caractéristiques, une analyse PCA produira (1) la combinaison linéaire des caractéristiques avec la variance la plus élevée (premier composant PCA), (2) la combinaison linéaire avec la variance la plus élevée dans le sous-espace orthogonal au premier composant PCA, etc. (sous la contrainte que les coefficients de la combinaison forment un vecteur avec la norme d'unité) Que la combinaison linéaire avec la variance maximale soit une "bonne" caractéristique dépend vraiment de ce que vous essayez de prédire. Pour cette raison, je dirais qu'être un composant PCA et être un "bon" trait sont (en général) deux notions non liées.

Mepuzza
la source
(-1) Je ne vois pas comment cela répond à la question initiale.
Amibe dit de réintégrer Monica
-1

Vous ne pouvez pas commander les fonctions en fonction de leur variance, car la variance utilisée dans PCA est fondamentalement une entité multidimensionnelle. Vous ne pouvez commander des entités que par projection de la variance dans la direction que vous choisissez (ce qui est normalement le premier compnonet principal.) En d'autres termes, le fait qu'une entité présente plus de variance qu'une autre dépend de la manière dont vous choisissez la direction de votre projection.

James LI
la source
2
Je ne comprends pas: chaque entité d'origine a une variance, et on peut donc certainement "commander les entités en fonction de leur variance". De plus, je ne comprends pas comment on peut les ordonner "par la projection de la variance dans certaines directions choisies". Que veux-tu dire par là?
Amibe dit de réintégrer Monica
Vous pouvez en effet utiliser variance pour commander des fonctionnalités, mais cela n'a rien à voir avec PCA, qui traite toutes les fonctionnalités ensemble.
James LI
À propos de la projection: Si vous avez n entités, un vecteur de direction est simplement un vecteur unitaire dans l’espace à n dimensions; la projection de vos m vecteurs d'instance est le produit d'échelle du vecteur d'instance avec ce vecteur unitaire, ce qui donne un vecteur dimensionnel. Et la variance de ce vecteur m-dimensionnel est cette "projection" de la variance de l'ensemble de données dans la direction choisie.
James LI
1
-1. Je pense que chacune des trois phrases de votre réponse est soit fausse, soit si peu claire qu'elle est trompeuse. Je suis d'accord avec tout ce que vous avez écrit dans les commentaires, mais je n'ai aucune idée de la façon dont votre réponse peut être interprétée comme telle. "Vous ne pouvez pas commander des fonctions en fonction de leur variance" - ?? "Vous ne pouvez commander des fonctions que par projection de la variance dans une certaine direction" - ?? "si une caractéristique a plus de variance ... dépend ..." - ?? Tout cela est faux.
amibe dit de réintégrer Monica
2
Je ne savais pas que cette question avait été posée il y a si longtemps; et je suis d'accord avec la plupart de ces réponses. Mon point est: PCA n'est pas approprié pour la sélection de fonctionnalités. Personne ici ne veut le dire directement.
James LI