Szukam zaimplementować biplot do analizy głównych składników (PCA) w JavaScript. Moje pytanie brzmi: jak określić współrzędne strzałek z wyjścia rozkładu pojedynczego wektora (SVD) macierzy danych?
Oto przykładowy dwupłat wyprodukowany przez R:
biplot(prcomp(iris[,1:4]))
Próbowałem to sprawdzić w artykule Wikipedii na temat biplota, ale nie jest to zbyt przydatne. Lub poprawnie. Nie jestem pewien który.
biplot()
. Ponadto, po co zawracać sobie głowę integracją R-JS dla czegoś, co wymaga zaledwie kilku wierszy kodu.Odpowiedzi:
Istnieje wiele różnych sposobów tworzenia dwupłatów PCA, więc nie ma unikalnej odpowiedzi na twoje pytanie. Oto krótki przegląd.
Zakładamy, że macierz danych ma n punktów danych w rzędach i jest wyśrodkowana (tzn. Wszystkie kolumny są zerowe). Na razie nie zakładamy, że był on znormalizowany, tzn. Rozważamy PCA na macierzy kowariancji (nie na macierzy korelacji). PCA oznacza rozkład pojedynczej wartości X = U S V ⊤ , możesz zobaczyć moją odpowiedź tutaj, aby uzyskać szczegółowe informacje: Związek między SVD a PCA. Jak korzystać z SVD do wykonywania PCA?X n
W biplocie PCA dwa pierwsze główne składniki są wykreślane jako wykres rozproszenia, tj. Pierwsza kolumna jest wykreślana względem drugiej kolumny. Ale normalizacja może być inna; np. można użyć:U
Ponadto oryginalne zmienne są wykreślane jako strzałki; czyli współrzędnych AN i -tym strzałka końcowych są przez ı wartości -tym w pierwszej i drugiej kolumnie V . Ale znowu można wybrać różne normalizacje, np .:(x,y) i i V
Oto jak to wszystko wygląda w zestawie danych Fisher Iris:
[Jakakolwiek kombinacja zostanie użyta, może być konieczne skalowanie strzałek według dowolnego dowolnego stałego współczynnika, tak aby zarówno strzałki, jak i punkty danych pojawiały się mniej więcej w tej samej skali.]
biplot
biplot
biplot
PCA na macierzy korelacji
Dalsza lektura:
źródło