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:
- transformer l'ensemble de données via PCA et le projeter dans un nouveau sous-espace 2D
- transformation (l'ensemble déjà transformé par PCA) via LDA pour max. séparation en classe
ou
- sauter l'étape PCA et utiliser les 2 principaux composants d'un LDA.
ou toute autre combinaison qui a du sens.
la source
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.Réponses:
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Σ−1WΣ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).N N Σ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ΣW N≫ 1 ΣW N Σ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+ λ I λ Σ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:
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:
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:
la source
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.
la source
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).min(num_groups-1,num_features)
message ...