Dlaczego używamy PCA do przyspieszania algorytmów uczenia się, skoro możemy po prostu zmniejszyć liczbę funkcji?


12

Na kursie uczenia maszynowego dowiedziałem się, że jednym z powszechnych zastosowań PCA ( Principal Component Analysis ) jest przyspieszenie innych algorytmów uczenia maszynowego. Na przykład wyobraź sobie, że trenujesz model regresji logistycznej. Jeśli masz zestaw treningowy dla i od 1 do n i okazuje się, że wymiar wektora x jest bardzo duży (powiedzmy wymiary) może użyć PCA, aby uzyskać mniejszy wymiar (powiedzmy k wymiary) wektor cechy z. Następnie możesz wytrenować swój model regresji logistycznej na zestawie treningowym dla i od 1 do n. Trenowanie tego modelu będzie szybsze, ponieważ wektor cech ma mniej wymiarów.( z ( i ) , y ( i ) )(x(i),y(i))(z(i),y(i))

Nie rozumiem jednak, dlaczego nie można po prostu zmniejszyć wymiaru wektora operacji do wymiarów k, wybierając losowo k swoich funkcji i eliminując resztę.

Wektory Z to liniowe kombinacje wektorów cech. Ponieważ wektory z są ograniczone do powierzchni k-wymiarowej, możesz zapisać ak wyeliminowane wartości cech jako funkcję liniową k pozostałych wartości cech, a zatem wszystkie z mogą być utworzone przez liniowe kombinacje twoich cech k. Czy zatem model wytrenowany na zestawie treningowym z wyeliminowanymi funkcjami nie powinien mieć takiej samej mocy jak model wytrenowany na zestawie treningowym, którego wymiar został zmniejszony przez PCA? Czy to zależy tylko od rodzaju modelu i czy opiera się na jakiejś kombinacji liniowej?


1
upuszczenie kolumn spowoduje utratę większej ilości informacji w porównaniu do korzystania z PCA
Haitao Du

2
Co ma z tym wspólnego reakcja łańcuchowa polimerazy? :-) --- Z całą powagą powinieneś zawsze przeliterować termin przed użyciem skrótu.
Carl Witthoft

Możesz zobaczyć wektory własne uzyskane przez PCA jako nowe funkcje, więc PCA pozwala na redukcję funkcji - poprzez połączenie tych, które mamy, w te, które wychwytują więcej wariancji niż te, z którymi zaczęliśmy.
matreadler

Odpowiedzi:


26

Załóżmy, że początkowo masz funkcje ale jest to zbyt wiele, więc chcesz dopasować swój model do funkcji . Możesz wybrać ze swoich funkcji i upuścić resztę. Jeśli jest naszą macierzą funkcji, odpowiada to użyciu gdzie wybiera dokładnie kolumny , które chcemy uwzględnić. Ale to ignoruje wszystkie informacje w innych kolumnach, więc dlaczego nie rozważyć bardziej ogólnego zmniejszenia wymiaru gdzie ? To właśnie robi PCA: znajdujemy macierz taką, żed < p d X X D D { 0 , 1 } p × d X X V V R p × d V X V X X d p ppd<pdXXDD{0,1}p×dXXVVRp×dVXVzawiera jak najwięcej informacji w jak to możliwe. Nie wszystkie kombinacje liniowe są tworzone jednakowo. O ile nasza macierz ma tak niskiej rangi, że losowy zestaw kolumn może (z dużym prawdopodobieństwem) obejmować przestrzeń kolumn wszystkich kolumn , z pewnością nie będziemy w stanie zrobić tak dobrze, jak we wszystkich funkcjach . Niektóre informacje zostaną utracone, a więc musimy stracić jak najmniej informacji. W przypadku PCA „informacjami”, których staramy się uniknąć, są różnice w danych.XXdpp

Jeśli chodzi o powód, dla którego ograniczamy się do transformacji liniowych predyktorów, istotą tego przypadku jest czas obliczeń. Jeśli moglibyśmy zrobić fantazyjny nieliniową redukcję wymiarów na mogliśmy prawdopodobnie po prostu pasuje do modelu na wszystkich też. Dzięki temu PCA idealnie leży na styku szybkiego do obliczenia i skutecznego.XXX


2
+1. Nadal sensowne jest pytanie, dlaczego zmienność X (którą PCA próbuje zachować) powinna mieć znaczenie dla przewidywania Y ... To jest powiązany wątek: stats.stackexchange.com/questions/141864 .
ameba mówi Przywróć Monikę

4

PCA ogranicza funkcje, zachowując wariancję / informacje w oryginalnych danych. Pomaga to w włączeniu obliczeń bez utraty podobieństwa danych do rzeczywistości.


2

Rozwiązanie PCA

Po pierwsze, strzeż się, gdy używasz PCA do tego celu. Jak napisałem w odpowiedzi na powiązane pytanie, PCA niekoniecznie prowadzi do wyboru funkcji, które są pouczające dla regresji, którą zamierzasz zrobić (patrz także Jolliffe 1982 ).

OP zaproponował rozwiązanie

reduce the dimension of your feature vector to k dimensions by just choosing k of your features at random and eliminating the rest.dimension of your vector x is very largep

pCkkpp=1000k=58.25×1012k=5k=6p

Sugerowane rozwiązanie

p

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.