Est-il judicieux de combiner PCA et LDA?

25

Supposons que j'ai un ensemble de données pour une tâche de classification statistique supervisée, par exemple via un classifieur Bayes. Cet ensemble de données se compose de 20 entités et je veux le résumer à 2 entités via des techniques de réduction de dimensionnalité telles que l'analyse en composantes principales (PCA) et / ou l'analyse discriminante linéaire (LDA).

Les deux techniques projettent les données sur un sous-espace d'entités plus petit: avec PCA, je trouverais les directions (composants) qui maximisent la variance dans l'ensemble de données (sans tenir compte des étiquettes de classe), et avec LDA j'aurais les composants qui maximisent l'intervalle -séparation de classe.

Maintenant, je me demande si, comment et pourquoi ces techniques peuvent être combinées et si cela a du sens.

Par exemple:

  1. transformer l'ensemble de données via PCA et le projeter dans un nouveau sous-espace 2D
  2. transformation (l'ensemble déjà transformé par PCA) via LDA pour max. séparation en classe

ou

  1. sauter l'étape PCA et utiliser les 2 principaux composants d'un LDA.

ou toute autre combinaison qui a du sens.

amibe dit réintégrer Monica
la source
2
Il ne peut y avoir d'universel best practice. L'ACP et l'ADL, en tant que techniques de réduction de la dimensionnalité, sont très différentes. Parfois, les gens font de l'APC avant la LDA, mais cela a le risque de jeter (avec les PC mis au rebut) d'importantes dimensions discriminantes. La question que vous posez a en fait été posée à plusieurs reprises sous une forme ou une autre sur ce site. Veuillez rechercher «PCA LDA» pour lire ce que les gens lui ont dit.
ttnphns
@SebastianRaschka: Je me demande si ma réponse ici était utile, ou avez-vous d'autres questions sur ces questions?
amibe dit Réintégrer Monica
@amoeba désolé, il n'a pas vu la réponse jusqu'à présent - d'une manière ou d'une autre, il a dû passer à travers les mailles du filet, merci!

Réponses:

44

Résumé: L'ACP peut être réalisée avant le LDA pour régulariser le problème et éviter un sur-ajustement.

Rappelons que les projections LDA sont calculées via la composition par igendec , où Σ W etΣW1ΣBΣWΣB sont des matrices de covariance et -classe. S'il y a moins de points de données (où N est la dimensionnalité de votre espace, c'est-à-dire le nombre d'entités / variables), alors Σ W sera singulier et ne peut donc pas être inversé. Dans ce cas, il n'y a tout simplement aucun moyen d'effectuer directement LDA, mais si l'on applique d'abord PCA, cela fonctionnera. @Aaron a fait cette remarque dans les commentaires de sa réponse, et je suis d'accord avec cela (mais en désaccord avec sa réponse en général, comme vous le verrez maintenant).NNΣW

Cependant, ce n'est qu'une partie du problème. La vue d'ensemble est que LDA tend très facilement à surajuster les données. Notez que la matrice de covariance intra-classe est inversée dans les calculs LDA; pour les matrices de grande dimension, l'inversion est une opération très sensible qui ne peut être effectuée de manière fiable que si l'estimation de est vraiment bonne. Mais dans les dimensions élevées N 1 , il est vraiment difficile d'obtenir une estimation précise de Σ W , et dans la pratique, il faut souvent avoir beaucoup plus que N points de données pour commencer à espérer que l'estimation est bonne. Sinon Σ WΣWN1ΣWNΣW sera presque singulier (c'est-à-dire que certaines des valeurs propres seront très faibles), ce qui entraînera un sur-ajustement, c'est-à-dire une séparation de classe presque parfaite sur les données d'entraînement avec des performances aléatoires sur les données de test.

Pour résoudre ce problème, il faut régulariser le problème. Une façon de le faire consiste à utiliser PCA pour réduire d'abord la dimensionnalité. Il y en a d'autres, sans doute meilleures, par exemple la méthode LDA régularisée (rLDA) qui utilise simplement avec un petit λ au lieu de Σ W (c'est ce qu'on appelle l' estimateur de rétrécissement ), mais la PCA est d'abord conceptuellement la approche la plus simple et fonctionne souvent très bien.(1-λ)ΣW+λjeλΣW

Illustration

Voici une illustration du problème de sur-ajustement. J'ai généré 60 échantillons par classe en 3 classes à partir de la distribution gaussienne standard (zéro moyen, variance unitaire) dans des espaces de 10, 50, 100 et 150 dimensions, et appliqué LDA pour projeter les données en 2D:

Sur-ajustement dans LDA

Notez comment à mesure que la dimensionnalité augmente, les classes deviennent de mieux en mieux séparées, alors qu'en réalité il n'y a pas de différence entre les classes.

Nous pouvons voir comment PCA aide à empêcher le sur-ajustement si nous faisons des classes légèrement séparées. J'ai ajouté 1 à la première coordonnée de la première classe, 2 à la première coordonnée de la deuxième classe et 3 à la première coordonnée de la troisième classe. Maintenant, ils sont légèrement séparés, voir sous-intrigue en haut à gauche:

Sur-ajustement en LDA et régularisation avec PCA

Le sur-ajustement (rangée du haut) est toujours évident. Mais si je prétraite les données avec PCA, en conservant toujours 10 dimensions (ligne du bas), le surapprentissage disparaît tandis que les classes restent séparées de manière presque optimale.

PS. Pour éviter les malentendus: je ne prétends pas que PCA + LDA est une bonne stratégie de régularisation (au contraire, je conseillerais d'utiliser rLDA), je démontre simplement que c'est une stratégie possible .


Mise à jour. Un sujet très similaire a déjà été discuté dans les fils suivants avec des réponses intéressantes et complètes fournies par @cbeleites:

Voir aussi cette question avec quelques bonnes réponses:

amibe dit réintégrer Monica
la source
Voilà une excellente réponse, sérieusement! Et tout en expliquant la théorie sous-jacente, vous avez également une belle explication pratique, une autre excellente réponse pour ma collection de référence. Merci beaucoup!
Je ne comprends pas la deuxième intrigue, il me semble que les classes ne sont pas séparées avec PCA avant LDA (rangée du bas)
PierreE
@PierreE, sur le deuxième graphique, les classes sont générées de telle sorte qu'elles ne sont presque pas séparées. La séparation est minuscule. Dans la rangée du bas, vous pouvez voir cette légère séparation, mais vous devez regarder de près: concentrez-vous sur les classes bleues et rouges et vous verrez que l'une est décalée vers la gauche et une autre vers la droite.
amibe dit Réintégrer Monica
OK je vois. J'ai oublié que la séparation des classes que nous voyons dans la rangée du haut est en fait trop adaptée. Merci
PierreE
1

Si vous avez un problème à deux classes, alors LDA vous ramènera à 1 dimension. Il n'y a aucune raison de commencer par l'ACP.

Aaron
la source
1
Hm, je ne suit pas votre raisonnement ici: je suis à peu près certain que la LDA ne vous ramène PAS à 1 dimension à moins que vous ne le vouliez. Cela dépend du nombre de vecteurs propres que vous souhaitez conserver après le tri des valeurs propres en diminuant les valeurs. Peut-être que je manque quelque chose ici ... mais je n'ai pas mentionné le nombre de classes. Supposons que nous ayons 3 classes avec 20 fonctionnalités chacune, et je veux les projeter sur un sous-espace 3D.
1
La seule raison de commencer par l'ACP est que la matrice de covariance intra-classe soit singulière. Si vous avez 20 fonctionnalités et trois classes, ce ne sera pas singulier, alors ne faites pas PCA en premier.
Aaron
4
assume we have 3 classes. @SebastianRaschka: Alors LDA vous permettra au maximum 2 fonctions discriminantes. Le nombre de valeurs propres dans LDA est min (num_groups-1, num_features).
ttnphns
@Sebastian Le nombre de fonctions discriminantes que vous choisissez dans LDA dépend de ce que vous voulez en faire. En tant que transformation spatiale, c'est à peu près comme une PCA "supervisée" et vous en choisissez autant que vous le souhaitez. En tant que méthode de classification de séparation des hyperplans , l'hyperplan est, par définition, de dimension N-1. Je pourrais peut-être poser une question à ce sujet pour plus d'informations, car je ne comprends toujours pas d'où vient le min(num_groups-1,num_features)message ...
Matthieu
1
@Matthieu Je crois que c'est à cause de la matrice de dispersion de classe entre les classes, vous la créez en ajoutant des matrices c (c = nombre de classes) qui ont un rang 1 ou moins. Vous ne pouvez donc avoir que des valeurs propres non nulles c-1 au maximum.