Je cherche à implémenter un biplot pour l'analyse des composants principaux (PCA) en JavaScript. Ma question est, comment puis-je déterminer les coordonnées des flèches à partir de la sortie de la décomposition vectorielle singulière (SVD) de la matrice de données?
Voici un exemple de biplot produit par R:
biplot(prcomp(iris[,1:4]))
J'ai essayé de le rechercher dans l'article Wikipedia sur biplot mais ce n'est pas très utile. Ou correct. Je ne sais pas lequel.
biplot()
. Aussi, pourquoi s'embêter avec l'intégration R-JS pour quelque chose qui ne nécessite que quelques lignes de code.Réponses:
Il existe de nombreuses façons différentes de produire un biplot PCA et il n'y a donc pas de réponse unique à votre question. Voici un bref aperçu.
Nous supposons que la matrice de données a points de données en lignes et est centrée (c'est-à-dire que les moyennes des colonnes sont toutes nulles). Pour l'instant, nous ne supposons pas qu'il était standardisé, c'est-à-dire que nous considérons l'ACP sur la matrice de covariance (pas sur la matrice de corrélation). PCA équivaut à une décomposition en valeur singulière vous pouvez voir ma réponse ici pour plus de détails: Relation entre SVD et PCA. Comment utiliser SVD pour effectuer PCA?X X = U S V ⊤ ,n
Dans un biplot PCA, deux premières composantes principales sont tracées comme un nuage de points, c'est-à-dire que la première colonne de est tracée contre sa deuxième colonne. Mais la normalisation peut être différente; par exemple, on peut utiliser:U
De plus, les variables d'origine sont tracées sous forme de flèches; ie les coordonnées d'un - ième point d' extrémité flèche sont données par la valeur -ième dans la première et la seconde colonne de . Mais encore une fois, on peut choisir différentes normalisations, par exemple:i i V(x,y) i i V
Voici à quoi tout cela ressemble pour l'ensemble de données Fisher Iris:
La combinaison de n'importe quelle sous-intrigue par le haut avec n'importe quelle sous-intrigue par le bas constituerait normalisations possibles. Mais selon la définition originale d'un biplot introduite dans Gabriel, 1971, L'affichage graphique biplot des matrices avec application à l'analyse des composants principaux (cet article a 2k citations, soit dit en passant), les matrices utilisées pour le biplot devraient, lorsqu'elles sont multipliées ensemble, approximatives (c'est tout le point). Ainsi, un "biplot approprié" peut utiliser par exemple et . Par conséquent, seulement trois des sont des "parcelles appropriées": à savoir une combinaison de toute sous-parcelle du dessus avec celle directement en dessous.X U S α β V S ( 1 - α ) / β 99 X USαβ VS(1−α)/β 9
[Quelle que soit la combinaison utilisée, il peut être nécessaire de mettre à l'échelle les flèches selon un facteur constant arbitraire afin que les flèches et les points de données apparaissent à peu près sur la même échelle.]
L'utilisation des chargements, c'est-à-dire , pour les flèches a un grand avantage en ce qu'elles ont des interprétations utiles (voir aussi ici à propos des chargements). La longueur des flèches de chargement se rapproche de l'écart-type des variables d'origine (la longueur au carré se rapproche de la variance), les produits scalaires entre deux flèches se rapprochent de la covariance entre elles et les cosinus des angles entre les flèches correspondent approximativement aux corrélations entre les variables d'origine. Pour faire un "bon biplot", il faut choisir , c'est-à-dire des PC standardisés, pour les points de données. Gabriel (1971) appelle cela "biplot PCA" et écrit que U √VS/n−1−−−−−√ Un−1−−−−−√
L'utilisation de et permet une bonne interprétation: les flèches sont des projections des vecteurs de base d'origine sur le plan PC, voir cette illustration par @ hxd1011 .VUS V
On peut même choisir de tracer les PC bruts avec les chargements. Ceci est un "biplot incorrect", mais a été par exemple réalisé par @vqv sur le biplot le plus élégant que j'ai jamais vu: Visualiser un million, édition PCA - il montre PCA de l'ensemble de données sur le vin.US
Le chiffre que vous avez publié (résultat par défaut de laU VS 0.8 n/(n−1) 1
biplot
fonction R ) est un "biplot approprié" avec et . La fonction met à l'échelle deux sous-parcelles de telle sorte qu'elles s'étendent sur la même zone. Malheureusement, la fonction fait un choix étrange de réduire toutes les flèches vers le bas par un facteur de et d'afficher les étiquettes de texte là où les extrémités des flèches auraient dû être. ( De plus, ne reçoit pas l'échelle correctement et se termine fait en traçant des scores avec la somme des carrés, au lieu de Voir cette enquête détaillée par @AntoniParellada:. Les flèches des variables sous - jacentes dans PCA biplot en R . )biplot
biplot
PCA sur matrice de corrélation
Si nous supposons en outre que la matrice de données a été normalisée de sorte que les écarts-types des colonnes soient tous égaux à , alors nous effectuons l'ACP sur la matrice de corrélation. Voici à quoi ressemble la même figure:X 1
Ici, les chargements sont encore plus attractifs, car (en plus des propriétés mentionnées ci-dessus), ils donnent exactement (et non approximativement) des coefficients de corrélation entre les variables originales et les PC. Les corrélations sont toutes inférieures à et les flèches de chargement doivent se trouver à l'intérieur d'un "cercle de corrélation" de rayon , qui est parfois également tracé sur un biplot (je l'ai tracé sur le sous-plot correspondant ci-dessus). Notez que le biplot par @vqv (lié ci-dessus) a été fait pour une PCA sur matrice de corrélation, et arbore également un cercle de corrélation.1 R=1
Lectures complémentaires:
la source