Czy ma sens łączenie PCA i LDA?


25

Załóżmy, że mam zestaw danych do nadzorowanego zadania klasyfikacji statystycznej, np. Za pomocą klasyfikatora Bayesa. Ten zestaw danych składa się z 20 elementów i chcę sprowadzić go do 2 elementów za pomocą technik redukcji wymiarów, takich jak analiza głównych składników (PCA) i / lub liniowa analiza dyskryminacyjna (LDA).

Obie techniki rzutują dane na mniejszą podprzestrzeń funkcji: dzięki PCA znajdowałbym kierunki (komponenty), które maksymalizują wariancję w zestawie danych (bez uwzględnienia etykiet klasy), a przy LDA miałem komponenty, które maksymalizowałyby pomiędzy separacja klas.

Zastanawiam się teraz, czy, jak i dlaczego można łączyć te techniki i czy ma to sens.

Na przykład:

  1. przekształcanie zestawu danych za pomocą PCA i rzutowanie go na nową podprzestrzeń 2D
  2. przekształcanie (już przekształconego PCA) zestawu danych przez LDA na max. separacja w klasie

lub

  1. pomijając krok PCA i używając 2 najlepszych komponentów z LDA.

lub dowolna inna kombinacja, która ma sens.


2
Nie może być uniwersalnego best practice. PCA i LDA, jako techniki redukcji wymiarów, są bardzo różne. Czasami ludzie robią PCA przed LDA, ale wiąże się to z ryzykiem wyrzucenia (wraz z odrzuconymi komputerami) ważnych wymiarów dyskryminujących. Pytanie, które zadajesz, zostało zadane w jakiejś formie kilkakrotnie na tej stronie. Wyszukaj „PCA LDA”, aby przeczytać, co ludzie na to powiedzieli.
ttnphns

@SebastianRaschka: Zastanawiam się, czy moja odpowiedź tutaj była przydatna, czy masz dodatkowe pytania dotyczące tych problemów?
ameba mówi Przywróć Monikę

@amoeba przepraszam, do tej pory nie widział odpowiedzi - jakoś musiał prześlizgnąć się przez pęknięcia, dziękuję!

Odpowiedzi:


44

Podsumowanie: PCA można wykonać przed LDA, aby uregulować problem i uniknąć nadmiernego dopasowania.

Przypomnijmy, że prognozy LDA są obliczane za pomocą składni składowej , gdzie i są wewnątrz i między macierzami macierzy kowariancji. Jeśli jest mniej niż punktów danych (gdzie jest wymiarami przestrzeni, tj. cech / zmiennych), to będzie pojedynczą i dlatego nie będzie można jej odwrócić. W takim przypadku po prostu nie ma sposobu, aby wykonać LDA bezpośrednio, ale jeśli najpierw zastosuje się PCA, zadziała. @Aaron poczynił tę uwagę w komentarzach do swojej odpowiedzi i zgadzam się z tym (ale ogólnie nie zgadzam się z jego odpowiedzią, jak zobaczycie teraz).ΣW.-1ΣbΣW.ΣbN.N.ΣW.

Jest to jednak tylko część problemu. Większy obraz jest taki, że LDA bardzo łatwo ma tendencję do nadpisywania danych. Zauważ, że wewnątrzklasowa macierz kowariancji zostaje odwrócona w obliczeniach LDA; dla odwracania macierzy wielowymiarowych jest to bardzo wrażliwa operacja, którą można wykonać niezawodnie tylko wtedy, gdy oszacowanie jest naprawdę dobre. Ale w wysokich wymiarach naprawdę trudno jest uzyskać dokładne oszacowanie , aw praktyce często trzeba mieć dużo więcej niż punktów danych, aby zacząć mieć nadzieję, że oszacowanie jest dobre. W przeciwnym razieΣW.N.1ΣW.N.ΣW. będzie prawie pojedyncza (tj. niektóre wartości własne będą bardzo niskie), a to spowoduje nadmierne dopasowanie, tj. prawie idealną separację klas na danych treningowych z przypadkową wydajnością na danych testowych.

Aby rozwiązać ten problem, należy uregulować problem. Jednym ze sposobów jest użycie PCA w celu zmniejszenia wymiarów w pierwszej kolejności. Istnieją inne, prawdopodobnie lepsze, np. Uregulowana metoda LDA (rLDA), która po prostu używa z małym zamiast (jest to nazywane estymatorem skurczu ), ale najpierw wykonanie PCA jest najprostszym podejściem i często działa dobrze.(1-λ)ΣW.+λjaλΣW.

Ilustracja

Oto ilustracja problemu nadmiernego dopasowania. Wygenerowałem 60 próbek na klasę w 3 klasach ze standardowego rozkładu Gaussa (średnie zero, wariancja jednostkowa) w przestrzeniach 10, 50, 100 i 150 wymiarów, i zastosowałem LDA do projekcji danych na 2D:

Przeregulowanie w LDA

Zwróć uwagę, jak wraz ze wzrostem wymiarów, klasy stają się coraz lepiej oddzielane, podczas gdy w rzeczywistości nie ma różnicy między klasami.

Możemy zobaczyć, w jaki sposób PCA pomaga zapobiegać nadmiernemu dopasowaniu, jeśli lekce rozdzielimy klasy. Dodałem 1 do pierwszej współrzędnej pierwszej klasy, 2 do pierwszej współrzędnej drugiej klasy i 3 do pierwszej współrzędnej trzeciej klasy. Teraz są one lekko oddzielone, patrz lewy górny wykres podrzędny:

Przeregulowanie w LDA i regularyzacja za pomocą PCA

Nadmierne dopasowanie (górny rząd) jest nadal oczywiste. Ale jeśli wstępnie przetworzę dane za pomocą PCA, zawsze zachowując 10 wymiarów (dolny wiersz), przepasowanie zniknie, podczas gdy klasy pozostaną prawie optymalnie rozdzielone.

PS. Aby uniknąć nieporozumień: nie twierdzę, że PCA + LDA jest dobrą strategią regularyzacji (przeciwnie, radziłbym używać rLDA), po prostu pokazuję, że jest to możliwa strategia.


Aktualizacja. Bardzo podobny temat był wcześniej omawiany w następujących wątkach z interesującymi i wyczerpującymi odpowiedziami dostarczonymi przez @cbeleites:

Zobacz także to pytanie z kilkoma dobrymi odpowiedziami:


To świetna odpowiedź, poważnie! Wyjaśniając podstawową teorię, masz tam również praktyczne wyjaśnienie, kolejną świetną odpowiedź na moją kolekcję referencji. Wielkie dzięki!

Nie rozumiem drugiej fabuły, wydaje mi się, że klasy nie są oddzielone PCA przed LDA (dolny rząd)
PierreE

@PierreE, na drugim wykresie klasy są generowane tak, że prawie się nie rozdzielają. Separacja jest niewielka. W dolnym rzędzie widać tę niewielką separację, ale musisz się uważnie przyjrzeć: skup się na klasach niebieskiej i czerwonej, a zobaczysz, że jedna jest przesunięta w lewo, a druga w prawo.
ameba mówi Przywróć Monikę

Dobra, widzę. Zapomniałem, że rozdział klas, który widzimy w górnym rzędzie, jest w rzeczywistości zbyt duży. Dzięki
PierreE

1

Jeśli masz problem z dwiema klasami, LDA zabierze Cię do 1 wymiaru. Nie ma powodu, aby najpierw robić PCA.


1
Hm, nie podążam tutaj za twoim rozumowaniem: jestem całkiem pewien, że LDA NIE sprowadza cię do 1-wymiaru, chyba że zdecydujesz. To zależy od liczby wektorów własnych, które chcesz zachować po posortowaniu wartości własnych przez zmniejszenie wartości. Może coś mi tu brakuje ... ale nie wspomniałem o liczbie zajęć. Załóżmy, że mamy 3 klasy z 20 funkcjami każda i chcę je rzutować na podprzestrzeń 3D.

1
Jedynym powodem, dla którego należy najpierw wykonać PCA, jest to, że wewnątrzklasowa macierz kowariancji jest pojedyncza. Jeśli masz 20 funkcji i trzy klasy, nie będzie to liczba pojedyncza, więc nie rób najpierw PCA.
Aaron,

4
assume we have 3 classes. @SebastianRaschka: Wtedy LDA pozwoli ci na maksymalnie 2 funkcje dyskryminujące. Liczba wartości własnych w LDA wynosi min (num_groups-1, num_features).
ttnphns

@Sebastian Liczba funkcji dyskryminujących wybranych przez LDA zależy od tego, co chcesz z tym zrobić. Jako transformacja kosmiczna przypomina ona „nadzorowany” PCA i wybierasz tyle, ile chcesz. Jako hiperpłaszczyzna sposobu klasyfikacji rozdzielającego hiperpłaszczyzna jest z definicji wymiaru n-1. Mogę zadać pytanie na ten temat, aby uzyskać dodatkowe informacje, ponieważ wciąż nie rozumiem, skąd min(num_groups-1,num_features)pochodzi ...
Matthieu

1
@Matthieu Wierzę, że to z powodu pośredniej macierzy rozproszenia klasy, tworzysz ją przez dodanie macierzy c (c = liczba klas), które mają rangę 1 lub mniejszą. Możesz więc mieć tylko niezerowe wartości własne c-1 przy maks.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.