PCA i podział pociąg / test

35

Mam zestaw danych, dla którego mam wiele zestawów etykiet binarnych. Dla każdego zestawu etykiet uczę klasyfikatora, oceniając go poprzez walidację krzyżową. Chcę zmniejszyć wymiarowość za pomocą analizy głównych składników (PCA). Moje pytanie brzmi:

Czy możliwe jest wykonanie PCA raz dla całego zestawu danych, a następnie użycie nowego zestawu danych o niższych wymiarach do weryfikacji krzyżowej, jak opisano powyżej? Czy też muszę zrobić osobny PCA dla każdego zestawu treningowego (co oznaczałoby zrobienie osobnego PCA dla każdego klasyfikatora i dla każdego foldu walidacji krzyżowej)?

Z jednej strony PCA nie korzysta z etykiet. Z drugiej strony wykorzystuje dane testowe do transformacji, więc obawiam się, że mogłoby to wpłynąć na wyniki.

Powinienem wspomnieć, że oprócz zaoszczędzenia trochę pracy, wykonanie PCA raz dla całego zestawu danych pozwoliłoby mi wizualizować zestaw danych dla wszystkich zestawów etykiet jednocześnie. Jeśli mam inny PCA dla każdego zestawu etykiet, musiałbym wizualizować każdy zestaw etykiet osobno.

Bitowe
źródło
Dla przyszłego odniesienia. Zobacz to pytanie, jak wykonać walidację krzyżową z PCA w caretpakiecie R z pakietem: PCA i k-fold Cross Validation w Caret .
ameba mówi Przywróć Monikę
Zobacz także zerowanie centrowania zestawu testowego po PCA na zestawie treningowym .
ameba mówi Przywróć Monikę
Zobacz także Czy rzeczywiście dobrze jest dokonywać nienadzorowanego wyboru funkcji przed weryfikacją krzyżową? , w szczególności odpowiedź @cbeleites.
ameba mówi Przywróć Monikę

Odpowiedzi:

34

Aby zmierzyć błąd uogólnienia, musisz zrobić to drugie: osobny PCA dla każdego zestawu treningowego (co oznaczałoby zrobienie osobnego PCA dla każdego klasyfikatora i każdego foldera CV).

Następnie zastosować tę samą transformację do zestawu testowego: czyli robisz nie zrobić oddzielną PCA na zestawie testowym! Odejmujesz średnią (iw razie potrzeby dzielisz przez odchylenie standardowe) zestawu treningowego, jak wyjaśniono tutaj: zero centrowania zestawu testowego po PCA na zestawie treningowym . Następnie rzutujesz dane na komputery PC zestawu treningowego.


  • Konieczne będzie zdefiniowanie automatycznego kryterium liczby używanych komputerów.
    Ponieważ jest to tylko pierwszy krok redukcji danych przed „faktyczną” klasyfikacją, użycie kilku zbyt wielu komputerów prawdopodobnie nie zaszkodzi wydajności. Jeśli spodziewasz się, ile komputerów byłoby dobrych z doświadczenia, możesz po prostu tego użyć.

  • Możesz także później sprawdzić, czy konieczne było ponowne wykonanie PCA dla każdego modelu zastępczego (powtórzenie analizy tylko z jednym modelem PCA). Myślę, że wynik tego testu jest wart zgłoszenia.

  • Kiedyś zmierzyłem błąd systematyczny powtarzania PCA i stwierdziłem, że dzięki moim spektroskopowym danym klasyfikacyjnym wykryłem tylko połowę poziomu błędu uogólnienia, gdy nie powtarzałem PCA dla każdego modelu zastępczego.

To powiedziawszy, możesz zbudować dodatkowy model PCA całego zestawu danych do celów opisowych (np. Wizualizacji). Upewnij się tylko, że oba podejścia są od siebie oddzielone.


Nadal trudno mi zrozumieć, jak początkowe PCA w całym zestawie danych wpłynęłoby na wyniki, nie widząc etykiet klasy.

Ale widzi dane. A jeśli wariancja między klasami jest duża w porównaniu z wariancją wewnątrz klasy, wariancja między klasami wpłynie na projekcję PCA. Zwykle krok PCA jest wykonywany, ponieważ musisz ustabilizować klasyfikację. Oznacza to, że w sytuacji, w której dodatkowe przypadki zrobić wpływać na model.

Jeśli wariancja międzyklasowa jest niewielka, to odchylenie nie będzie duże, ale w takim przypadku PCA nie pomogłoby również w klasyfikacji: projekcja PCA nie może więc pomóc w podkreśleniu podziału między klasami.

cbeleites obsługuje Monikę
źródło
Dzięki, właśnie tak myślałem, więc dobrze jest usłyszeć to z niezależnego źródła. Nadal trudno mi zrozumieć, jak początkowe PCA w całym zestawie danych wpłynęłoby na wyniki, nie widząc etykiet klasy.
Bitowe
@ Bitwise: proszę zobaczyć moją edycję
cbeleites obsługuje Monikę
Cześć @cbeleites, chcę, aby ten wątek był „kanonicznym” wątkiem w pytaniach dotyczących PCA i podziału pociągu / testu (jest ich wiele!) I oznaczyłem je jako duplikaty. Pozwoliłem sobie dodać jedno zdanie do twojej odpowiedzi, które może wyjaśnić nieporozumienie, które często pojawia się w duplikatach pytań. Mam nadzieję, że jesteś zadowolony z mojej edycji, ale proszę sprawdź! +1, btw.
ameba mówi Przywróć Monikę
@amoeba, dziękuję bardzo. Tak, to ważny punkt, który dodałeś. Wielkie dzięki za pracę, którą włożyłeś w sprzątanie zbioru pytań.
cbeleites obsługuje Monikę
1
@FelipeAlmeida: tak
cbeleites obsługuje Monikę
2

Odpowiedź na to pytanie zależy od projektu eksperymentalnego. PCA można wykonać na całym zestawie danych, o ile nie trzeba budować modelu przed znajomością danych, które próbujesz przewidzieć. Jeśli masz zestaw danych, w którym masz kilka próbek, z których niektóre są znane, a niektóre są nieznane, i chcesz przewidzieć niewiadome, w tym niewiadome w PCA zapewni Ci bogatszy widok różnorodności danych i może pomóc poprawić wydajność modelu. Ponieważ PCA nie jest nadzorowane, nie „osiąga szczytów”, ponieważ możesz zrobić to samo z nieznanymi próbkami, jak możesz ze znanymi.

Jeśli z drugiej strony masz zestaw danych, w którym musisz teraz zbudować model, aw pewnym momencie w przyszłości otrzymasz nowe próbki, które musisz przewidzieć za pomocą tego wstępnie zbudowanego modelu, musisz wykonać osobne PCA w każdej zakładce aby mieć pewność, że się uogólni. Ponieważ w tym przypadku nie będziemy wiedzieć, jak mogą wyglądać nowe funkcje i nie możemy odbudować modelu, aby uwzględnić nowe funkcje, wykonanie PCA na danych testowych byłoby „osiągnięciem szczytowym”. W takim przypadku zarówno cechy, jak i wyniki dla nieznanych próbek nie są dostępne, gdy model zostanie zastosowany w praktyce, więc nie powinny być dostępne podczas szkolenia modelu.

Szczekacz
źródło
0

Zrób to drugie, PCA na zestawie treningowym za każdym razem

W PCA uczymy się zredukowanej macierzy: U, która pomaga nam uzyskać projekcjęZ_train = U x X_train

W czasie testu używamy tego samego U, którego nauczył się z fazy treningowej, a następnie obliczamy projekcjęZ_test = U x X_test

Zasadniczo więc projektujemy zestaw testowy na zmniejszoną przestrzeń cech uzyskaną podczas szkolenia.

Podstawowym założeniem jest to, że zestaw testowy i pociągowy powinny pochodzić z tego samego rozkładu, co wyjaśnia powyższą metodę.

Vamshi G.
źródło