Użyłem liniowej analizy dyskryminacyjnej (LDA) z scikit-learn
biblioteki uczenia maszynowego (Python) do redukcji wymiarów i byłem trochę ciekawy wyników. Zastanawiam się teraz, czym scikit-learn
zajmuje się LDA, aby wyniki wyglądały inaczej niż np. Ręczne podejście lub LDA wykonane w R. Byłoby wspaniale, gdyby ktoś mógł dać mi tutaj jakieś spostrzeżenia.
Zasadniczo najbardziej niepokojące jest to, że scikit-plot
pokazuje korelację między dwiema zmiennymi, gdzie powinna istnieć korelacja 0.
Do testu użyłem zestawu danych Iris, a pierwsze 2 liniowe dyskryminatory wyglądały tak:
IMG-1. LDA poprzez scikit-learn
Jest to zasadniczo zgodne z wynikami, które znalazłem w dokumentacji scikit-learn tutaj.
Teraz przeszedłem LDA krok po kroku i otrzymałem inną projekcję. Próbowałem różnych podejść, aby dowiedzieć się, co się dzieje:
IMG-2. LDA na surowych danych (bez centrowania, bez standaryzacji)
I tutaj byłoby podejście krok po kroku, gdybym najpierw ustandaryzował (normalizacja z-score; wariancja jednostkowa) dane. Zrobiłem to samo z samym tylko średnim środkiem, co powinno prowadzić do tego samego względnego obrazu projekcji (i co rzeczywiście zrobiło).
IMG-3. LDA krok po kroku po centralizacji lub standaryzacji
IMG-4. LDA w R (ustawienia domyślne)
LDA w IMG-3, gdzie wyśrodkowałem dane (co byłoby preferowanym podejściem), wygląda również dokładnie tak samo jak ten, który znalazłem w poście przez osobę, która wykonała LDA w R
Kod referencyjny
Nie chciałem tutaj wklejać całego kodu, ale przesłałem go tutaj jako notes IPython z podziałem na kilka kroków, których użyłem (patrz poniżej) do projekcji LDA.
- Krok 1: Obliczanie wektorów średnich wymiarów d
Krok 2: Obliczanie macierzy rozproszenia
2.2 Macierz rozproszenia między klasami jest obliczana według następującego równania: gdzie jest ogólną średnią.S B = c ∑ i = 1 n i ( m i - m ) ( m i - m ) T m
Krok 3. Rozwiązanie ogólnego problemu wartości własnej dla macierzy
3.1 Sortowanie wektorów własnych przez zmniejszenie wartości własnych
3.2 Wybór k wektorów własnych z największych wartości własnych. Łączenie dwóch wektorów własnych z najwyższymi wartościami własnymi w celu skonstruowania naszej macierzy wektorów wymiarowych wymiarowejW.
Krok 5: Przekształcenie próbek w nową podprzestrzeń