Mam data.frame z 800 obs. z 40 zmiennych i chciałbym zastosować zasadową analizę komponentów do poprawy wyników mojej prognozy (która do tej pory najlepiej działa z maszyną Vector Support na około 15 ręcznie wybranych zmiennych).
Rozumiem, że prcomp może mi pomóc poprawić moje przewidywania, ale nie wiem, jak korzystać z wyników funkcji prcomp.
Otrzymuję wynik:
> PCAAnalysis <- prcomp(TrainTrainingData, scale.=TRUE)
> summary(PCAAnalysis)
Importance of components:
PC1 PC2 PC3 PC4 PC5 PC6 PC7 PC8 PC9 PC10 PC11 PC12 PC13 PC14
Standard deviation 1.7231 1.5802 1.3358 1.2542 1.1899 1.166 1.1249 1.1082 1.0888 1.0863 1.0805 1.0679 1.0568 1.0520
Proportion of Variance 0.0742 0.0624 0.0446 0.0393 0.0354 0.034 0.0316 0.0307 0.0296 0.0295 0.0292 0.0285 0.0279 0.0277
Cumulative Proportion 0.0742 0.1367 0.1813 0.2206 0.2560 0.290 0.3216 0.3523 0.3820 0.4115 0.4407 0.4692 0.4971 0.5248
PC15 PC16 PC17 PC18 PC19 PC20 PC21 PC22 PC23 PC24 PC25 PC26 PC27 PC28
Standard deviation 1.0419 1.0283 1.0170 1.0071 1.001 0.9923 0.9819 0.9691 0.9635 0.9451 0.9427 0.9238 0.9111 0.9073
Proportion of Variance 0.0271 0.0264 0.0259 0.0254 0.025 0.0246 0.0241 0.0235 0.0232 0.0223 0.0222 0.0213 0.0208 0.0206
Cumulative Proportion 0.5519 0.5783 0.6042 0.6296 0.655 0.6792 0.7033 0.7268 0.7500 0.7723 0.7945 0.8159 0.8366 0.8572
PC29 PC30 PC31 PC32 PC33 PC34 PC35 PC36 PC37 PC38
Standard deviation 0.8961 0.8825 0.8759 0.8617 0.8325 0.7643 0.7238 0.6704 0.60846 0.000000000000000765
Proportion of Variance 0.0201 0.0195 0.0192 0.0186 0.0173 0.0146 0.0131 0.0112 0.00926 0.000000000000000000
Cumulative Proportion 0.8773 0.8967 0.9159 0.9345 0.9518 0.9664 0.9795 0.9907 1.00000 1.000000000000000000
PC39 PC40
Standard deviation 0.000000000000000223 0.000000000000000223
Proportion of Variance 0.000000000000000000 0.000000000000000000
Cumulative Proportion 1.000000000000000000 1.000000000000000000
Myślałem, że uzyskam parametry, które są najważniejsze do użycia, ale po prostu nie znajduję tych informacji. Widzę tylko odchylenie standardowe itp. Na komputerach PC. Ale jak mam to wykorzystać do przewidywania?
pls
(Partial Least Squares), która zawiera narzędzia do PCR ( Principal Component Regression ).Odpowiedzi:
Chociaż nie jestem pewien co do natury twojego problemu, mogę ci powiedzieć, że użyłem PCA jako sposobu wydobywania dominujących wzorców w grupie zmiennych predykcyjnych w późniejszym budowaniu modelu. W twoim przykładzie byłyby one znalezione w podstawowych składnikach (PC)
PCAAnalysis$x
i byłyby oparte na wadze zmiennych znalezionych wPCAAnalysis$rotation
. Zaletą tego procesu jest to, że komputery PC są ortogonalne, a zatem usuwa się problemy wielokoliniowości między predyktorami modelu. Po drugie, możesz być w stanie zidentyfikować mniejszy podzbiór komputerów, które wychwytują większość wariancji twoich predyktorów. Informacje te można znaleźć wsummary(PCAAnalysis)
lub wPCAAnalysis$sdev
. Na koniec, jeśli jesteś zainteresowany wykorzystaniem podzbioru komputerów PC do przewidywania, możesz ustawićtol
parametr wprcomp
na wyższy poziom, aby usunąć końcowe komputery.Teraz możesz „rzutować” nowe dane na współrzędne PCA za pomocą
predict.prcomp()
funkcji. Ponieważ nazywasz swój zestaw danych „zestawem szkoleniowym”, może to mieć sens, aby następnie wyświetlić zestaw danych walidacyjnych na podstawie PCA w celu obliczenia ich odpowiednich współrzędnych PC. Poniżej znajduje się przykład dopasowania PCA do 4 pomiarów biometrycznych różnych gatunków tęczówki (które są do pewnego stopnia skorelowane). Następnie projektuję wartości biometryczne nowego zestawu danych kwiatów, które mają podobne kombinacje tych pomiarów dla każdego z trzech gatunków tęczówki. Z końcowego wykresu zobaczysz, że ich rzutowane komputery znajdują się w podobnym obszarze wykresu, co oryginalny zestaw danych.Przykład z wykorzystaniem
iris
zestawu danych:źródło
predict.prcomp
pomocy.Informacje z polecenia Summary (), które załączyłeś do pytania, pozwalają zobaczyć np. Proporcję wariancji, którą przechwytuje każdy główny składnik (Proporcja wariancji). Ponadto skumulowana proporcja jest obliczana na produkcję globalną. Na przykład musisz mieć 23 komputery, aby uchwycić 75% wariancji w zestawie danych.
Z pewnością nie są to informacje, których zwykle używasz jako danych wejściowych do dalszych analiz. Raczej zwykle potrzebujesz obróconych danych, które są zapisywane jako „x” w obiekcie utworzonym przez prcomp.
Użycie kodu R jako krótkiego przykładu.
Następnie możesz wykorzystać dane w newdat do dalszych analiz, np. Jako dane wejściowe do SVM lub jakiegoś modelu regresji. Aby uzyskać więcej informacji , patrz np. Https://stackoverflow.com/questions/1805149/how-to-fit-a-linear-regression-model-with-two-principal-components-in-r .
źródło
predict()
metody dla danych testowych. W powyższym przykładziepredict(pr, USArrests)
zwróci tę samą macierz, copr$x
. W przypadku danych testowych zamień USarrests na nazwę danych testowych. Możesz zrobić to samo ręcznie, ale jest to łatwiejsze, ponieważ metody prognozowania automatycznie dbają o prawidłowe skalowanie zestawu danych testowych.predict()
korzysta domyślnie ze wszystkich składników. Można jednak ograniczyć liczbę zwracanych komponentów, np. „Przewidywana (pr, USArrests) [, 1: 2]. czy to byłoby dla Ciebie ok?predict()
to automatycznie, biorąc pod uwagę początkowe parametry za pomocąprcomp()
?