Po krótkich poszukiwaniach niewiele znajduję informacji na temat włączania wag obserwacyjnych / błędów pomiarowych do analizy głównych składników. To, co uważam, polega na iteracyjnych podejściach obejmujących wagi (np. Tutaj ). Moje pytanie brzmi: dlaczego to podejście jest konieczne? Dlaczego nie możemy użyć wektorów własnych ważonej macierzy kowariancji?
pca
measurement-error
weighted-data
bez nazwy
źródło
źródło
Odpowiedzi:
To zależy od tego, do czego dokładnie odnoszą się twoje wagi.
Ciężary rzędów
Niech będzie macierzą danych ze zmiennymi w kolumnach i n obserwacjami x i w rzędach. Jeśli każda obserwacja ma powiązaną masę wagowo I , to jest rzeczywiście prosta włączyć te ciężary do PCA.X n xja wja
Najpierw należy obliczyć średnią ważoną odejmij je od danych, abyjewyśrodkować.μ = 1∑ wja∑ wjaxja
Następnie obliczamy macierz ważonej kowariancji , gdzieW=diag(wi)to diagonalna macierz wag, i zastosuj standardowy PCA do jej analizy.1∑ wjaX⊤W X W=diag(wi)
Masy komórek
W opracowaniu Tamuz i in., 2013 , które znalazłeś, rozważany jest bardziej skomplikowany przypadek, gdy do każdego elementu macierzy danych stosowane są różne wagi . Wtedy rzeczywiście nie ma rozwiązania analitycznego i trzeba zastosować metodę iteracyjną. Należy zauważyć, że, jak potwierdzili autorzy, wymyślili na nowo koło, ponieważ takie ogólne ciężary były z pewnością rozważane wcześniej, np. W Gabriel i Zamir, 1979, Przybliżenie macierzy niższego rzędu przez najmniejsze kwadraty z dowolnym wyborem wag . Zostało to również omówione tutaj .wij
Jako dodatkowa uwaga: jeśli wagi różnią się zarówno zmiennymi, jak i obserwacjami, ale są symetryczne, tak że w i j = w j i , wówczas możliwe jest rozwiązanie analityczne, patrz Koren i Carmel, 2004, Solidna liniowa redukcja wymiarów .wij wij=wji
źródło
Dziękuję bardzo ameba za wgląd w wagi rzędów. Wiem, że to nie jest przepełnienie stosu, ale miałem pewne trudności ze znalezieniem implementacji PCA ważonego wierszem z wyjaśnieniem, a ponieważ jest to jeden z pierwszych wyników, kiedy korzystam z Google ważonego PCA, pomyślałem, że dobrze byłoby dołączyć moje rozwiązanie , może może pomóc innym w tej samej sytuacji. W tym fragmencie kodu Python2 do obliczenia stycznych zestawu danych 2D używana jest PCA ważona jądrem RBF takim jak ten opisany powyżej. Będę bardzo szczęśliwy, słysząc opinie!
I przykładowy wynik (robi to samo dla każdej kropki):
Pozdrawiam,
Andres
źródło