Ich habe einen data.frame mit 800 obs. von 40 Variablen, und möchte die Ergebnisse meiner Vorhersage mithilfe der Hauptkomponentenanalyse verbessern (was bisher mit Support Vector Machine an 15 handverlesenen Variablen am besten funktioniert).
Ich verstehe, dass ein prcomp mir helfen kann, meine Vorhersagen zu verbessern, aber ich weiß nicht, wie ich die Ergebnisse der prcomp-Funktion verwenden soll.
Ich erhalte das Ergebnis:
> 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
Ich dachte, ich würde die Parameter erhalten, die am wichtigsten sind, aber ich finde diese Informationen einfach nicht. Ich sehe nur die Standardabweichung usw. auf den PCs. Aber wie verwende ich das zur Vorhersage?
pls
(Partial Least Squares) mit Werkzeugen für die PCR ( Principal Component Regression ).Antworten:
Obwohl ich hinsichtlich der Art Ihres Problems unsicher bin, kann ich Ihnen sagen, dass ich PCA als Mittel zum Extrahieren dominanter Muster in einer Gruppe von Prädiktorvariablen in der späteren Erstellung eines Modells verwendet habe. In Ihrem Beispiel befinden sich diese in den Hauptkomponenten (PCs)
PCAAnalysis$x
und basieren auf der Gewichtung der Variablen inPCAAnalysis$rotation
. Ein Vorteil dieses Prozesses besteht darin, dass PCs orthogonal sind, sodass Sie Probleme der Multikollinearität zwischen den Modellvorhersagen beseitigen. Die zweite Möglichkeit besteht darin, dass Sie möglicherweise eine kleinere Teilmenge von PCs identifizieren können, die den größten Teil der Varianz in Ihren Prädiktoren erfassen. Diese Informationen finden Sie insummary(PCAAnalysis)
oder inPCAAnalysis$sdev
. Wenn Sie eine Teilmenge der PCs zur Vorhersage verwenden möchten, können Sie dentol
Parameter in einstellenprcomp
auf eine höhere Ebene, um nachfolgende PCs zu entfernen.Jetzt können Sie mit der
predict.prcomp()
Funktion neue Daten auf die PCA-Koordinatenbasis "projizieren" . Da Sie Ihren Datensatz als "Trainings" -Datensatz bezeichnen, kann es sinnvoll sein, einen Validierungsdatensatz zur Berechnung der entsprechenden PC-Koordinaten auf Ihre PCA-Basis zu projizieren. Unten sehen Sie ein Beispiel für die Anpassung einer PCA an 4 biometrische Messungen verschiedener Irisarten (die bis zu einem gewissen Grad korreliert sind). Anschließend projiziere ich biometrische Werte eines neuen Datensatzes von Blumen, die ähnliche Kombinationen dieser Messungen für jede der drei Irisarten aufweisen. Aus dem endgültigen Diagramm wird ersichtlich, dass sich die projizierten PCs in einem ähnlichen Bereich des Diagramms befinden wie der ursprüngliche Datensatz.Ein Beispiel mit dem
iris
Datensatz:quelle
predict.prcomp
Hilfe korrekt angegeben .Mit den Informationen aus dem Befehl summary (), den Sie an die Frage angehängt haben, können Sie z. B. den Anteil der Abweichung anzeigen, den jede Hauptkomponente erfasst (Anteil der Abweichung). Zusätzlich wird der kumulative Anteil zur Ausgabe berechnet. Beispielsweise benötigen Sie 23 PCs, um 75% der Varianz in Ihrem Datensatz zu erfassen.
Dies sind sicherlich nicht die Informationen, die Sie normalerweise als Eingabe für weitere Analysen verwenden. Was Sie normalerweise benötigen, sind die gedrehten Daten, die in dem von prcomp erstellten Objekt als 'x' gespeichert werden.
Verwenden von R-Code als kurzes Beispiel.
Anschließend können Sie die Daten im NewDat für weitere Analysen verwenden, z. B. als Eingabe für SVM oder ein Regressionsmodell. Weitere Informationen finden Sie beispielsweise unter https://stackoverflow.com/questions/1805149/how-to-fit-a-linear-regression-model-with-two-principal-components-in-r .
quelle
predict()
Methode für die Testdaten zu verwenden. Wenn Sie das obige Beispiel verwenden,predict(pr, USArrests)
wird dieselbe Matrix wie zurückgegebenpr$x
. Ersetzen Sie für Testdaten die USarrests durch den Namen der Testdaten. Sie können dasselbe von Hand tun, dies ist jedoch einfacher, da die Vorhersagemethoden automatisch für die korrekte Skalierung des Testdatensatzes sorgen.predict()
verwendet standardmäßig alle Komponenten. Sie können jedoch die Anzahl der zurückgegebenen Komponenten begrenzen, z. B. `predict (pr, USArrests) [, 1: 2]. Würde das für dich funktionieren?predict()
das bei den initialen Parametern automatisch mitprcomp()
?