Tracer un discriminant comme ligne sur nuage de points

8

Étant donné un nuage de points de données, je peux y tracer les principaux composants des données , comme des axes carrelés de points qui sont les scores des composants principaux. Vous pouvez voir un exemple de tracé avec le cloud (composé de 2 clusters) et son premier composant principal. Il est tracé facilement: les scores des composants bruts sont calculés sous forme de matrice de données x vecteur (s) propre (s) ; La coordonnée de chaque point de score sur l'axe d'origine (V1 ou V2) est le score x cos entre l'axe et le composant (qui est l'élément du vecteur propre) .

1ère composante principale carrelée par ses scores

Ma question: est-il possible de dessiner un discriminant de la même manière? Regardez ma photo s'il vous plaît. Je voudrais maintenant tracer le discriminant entre deux grappes, comme une ligne carrelée avec des scores discriminants (après analyse discriminante) en points. Si oui, quel pourrait être l'algo?

ttnphns
la source

Réponses:

8

D'accord, puisque personne n'a répondu, je pense qu'après une expérimentation, je peux le faire moi-même. En suivant les directives d'analyse discriminante, soit T la matrice sscp du nuage entier (données X , de 2 variables) (des écarts par rapport au centre du nuage), et soit W la matrice sscp regroupée au sein du cluster (des écarts par rapport au centre d'un cluster). B = TW est la matrice sscp inter-cluster. La décomposition en valeurs singulières de inv (W) B nous donne U (vecteurs propres de gauche), S (matrice diagonale de valeurs propres), V(vecteurs propres de droite). Dans mon exemple de 2 clusters, seule la 1ère valeur propre est non nulle (ce qui signifie qu'il n'y a qu'un seul discriminant), et donc nous utilisons uniquement le 1er vecteur propre (colonne) de U : U (1) . Maintenant, XU (1) sont les scores discriminants bruts recherchés . Pour montrer le discriminant comme une ligne en mosaïque avec ceux-ci, multipliez les scores par cos entre l'axe et le discriminant (qui est l'élément du vecteur propre U (1) ) - tout comme il l'a fait avec la composante principale ci-dessus . Le graphique résultant est ci-dessous.

entrez la description de l'image ici

ttnphns
la source
1
Il pourrait être plus facile de voir cela comme une projection : dans les deux cas (PCA ou LDA) est un vecteur unitaire dans la direction dans laquelle vous souhaitez projeter vos données (premier axe principal, ou premier "axe discriminant" ). Le projecteur orthogonal est donné par . La réponse est donc (ce qui est bien sûr exactement ce que vous avez découvert vous-même). La même formule fonctionne également pour les dimensions supérieures. U(1)PU=UUXUU
amoeba
@amoeba, merci pour le commentaire. La formule générale (pour toute dimensionnalité) est XV où V est la matrice normalisée sur colonne (à SS = 1) des vecteurs propres de l'extraction LDA. Ces vecteurs propres normalisés de données d'iris que j'affiche ici: stats.stackexchange.com/a/83114/3277 ; l'algèbre de LDA est ici: stats.stackexchange.com/a/48859/3277 . Un graphique où j'ai utilisé les vecteurs propres normalisés de LDA est ici: stats.stackexchange.com/a/22889/3277 .
ttnphns
Oui, bien sûr, sont les coordonnées des points de données dans l'espace cible de dimensionnalité inférieure, mais si vous voulez obtenir l'image de la projection dans l'espace à haute dimension d'origine (c'est-à-dire des points verts sur vos nuages ​​de points dans ce fil), vous ces points en arrière avec , donc à la fin vous obtenez . J'ai fait une erreur dans mon commentaire précédent: il se réduit à uniquement lorsque a des colonnes orthonormées, comme dans le cas PCA (mais pas LDA). Bien sûr, si vous ne considérez que 1 axe (et donc n'a qu'une seule colonne), cela n'a pas d'importance. XVV+XVV+XVVVV
amoeba