Ich möchte einen Biplot für die Hauptkomponentenanalyse (PCA) in JavaScript implementieren. Meine Frage ist, wie ermittle ich die Koordinaten der Pfeile aus dem Ausgang der Singular Vector Decomposition (SVD) der Datenmatrix?
Hier ist ein Beispiel-Biplot von R:
biplot(prcomp(iris[,1:4]))
Ich habe versucht, es im Wikipedia-Artikel über Biplot nachzuschlagen, aber es ist nicht sehr nützlich. Oder richtig. Ich weiß nicht was.
biplot()
. Warum sollten Sie sich mit der R-JS-Integration für etwas beschäftigen, das nur ein paar Codezeilen erfordert?Antworten:
Es gibt viele verschiedene Möglichkeiten, einen PCA-Biplot zu erstellen. Daher gibt es keine eindeutige Antwort auf Ihre Frage. Hier ist eine kurze Übersicht.
Wir gehen davon aus, dass die Datenmatrix hat n Datenpunkte in Reihen und zentriert ist (dh Spalte Mittel sind alle null). Vorerst können wir nicht davon ausgehen , dass es standardisiert, dh wir betrachten PCA auf Kovarianzmatrix (nicht auf Korrelationsmatrix). PCA entspricht einer Singulärwertzerlegung X = U S VX n meine Antwort finden Sie hier für Details:Beziehung zwischen SVD und PCA. Wie verwende ich SVD, um PCA durchzuführen?
In einem PCA-Biplot sind zwei erste Hauptkomponenten als Streudiagramm aufgetragen, dh die erste Spalte von ist gegen die zweite Spalte aufgetragen. Normalisierung kann aber auch anders sein; zB kann man benutzen:U
Ferner sind Originalvariablen als Pfeile dargestellt; dh Koordinaten eines i- ten Pfeilendpunkts werden durch den i- ten Wert in der ersten und zweiten Spalte von gegeben( x , y) ich ich . Aber auch hier kann man verschiedene Normalisierungen wählen, zB:V
So sieht das alles für den Fisher Iris-Datensatz aus:
[Unabhängig von der verwendeten Kombination kann es erforderlich sein, die Pfeile mit einem beliebigen konstanten Faktor zu skalieren, sodass sowohl die Pfeile als auch die Datenpunkte ungefähr auf derselben Skala angezeigt werden.]
biplot
biplot
biplot
PCA auf Korrelationsmatrix
Weitere Lektüre:
quelle