14

Was ist bei der Regression oder Klassifizierung der richtige (oder bessere) Weg zur Vorverarbeitung der Daten?PCA zuerst oder Normalisierung zuerst?

  1. Normalisieren der Daten -> PCA -> Ausbildung
  2. PCA -> PCA Ausgang normalisieren -> Ausbildung
  3. die Daten normalisieren -> PCA -> PCA Ausgang normalisieren -> Ausbildung

Welche der obigen Aussagen ist richtiger oder ist die "standardisierte" Methode, die Daten vorzuverarbeiten? Mit "normalisieren" meine ich entweder Standardisierung, lineare Skalierung oder andere Techniken.

Antwort

23

Sie sollten die Daten normalisieren, bevor Sie PCA ausführen. Betrachten Sie beispielsweise die folgende Situation. Ich schaffe eine Daten X mit einer bekannten Korrelationsmatrix C:

>> C = [1 0.5; 0.5 1]; 
>> A = chol(rho); 
>> X = randn(100,2) * A; 

Wenn ich jetzt PCA durchzuführen, I korrekt feststellen, dass die Hauptkomponenten (die Zeilen der Gewichte Vektor) in einem Winkel zu den Koordinatenachsen ausgerichtet sind, :

>> wts=pca(X) 
wts = 
    0.6659 0.7461 
    -0.7461 0.6659 

Wenn ich 100 das erste Merkmal des Datensatzes nun skalieren, intuitiv denken wir, dass die Hauptkomponenten nicht ändern sollte:

>> Y = X; 
>> Y(:,1) = 100 * Y(:,1); 

Allerdings haben wir jetzt feststellen, dass die Hauptkomponenten mit den Koordinatenachsen ausgerichtet sind:

>> wts=pca(Y) 
wts = 
    1.0000 0.0056 
    -0.0056 1.0000 

Um dies zu beheben, gibt es zwei Möglichkeiten. Zuerst konnte ich die Daten neu zu skalieren:

>> Ynorm = bsxfun(@rdivide,Y,std(Y)) 

(Die seltsame bsxfun Schreibweise verwendet wird Vektor-Matrix-Arithmetik in Matlab zu tun - alles, was ich tue, ist der Mittelwert subtrahiert und durch die Standardabweichung der einzelnen Merkmalsteilung) .

Wir bekommen jetzt vernünftige Ergebnisse von PCA:

>> wts = pca(Ynorm) 
wts = 
    -0.7125 -0.7016 
    0.7016 -0.7125 

Sie auf das PCA auf den ursprünglichen Daten etwas anders sind, weil wir jetzt garantiert haben, dass unsere Eigenschaften Einheit Standardabweichung haben, was nicht der war ursprünglicher Fall.

Die andere Option ist PCA unter Verwendung der Korrelationsmatrix der Daten durchzuführen, anstelle des äußeren Produkts:

>> wts = pca(Y,'corr') 
wts = 
    0.7071 0.7071 
    -0.7071 0.7071 

In der Tat, dies zu standardisieren das Datum völlig äquivalent ist, indem der Mittelwert subtrahiert wird, und dann Dividieren durch die Standardabweichung. Es ist einfach bequemer. Meiner Meinung nach sollten Sie immer dies tun, es sei denn, Sie haben einen guten Grund nicht (z. B. wenn Sie wollen Unterschiede in der Variation von jedem Merkmal aufnehmen).

5

Sie müssen die Daten zuerst normalisieren immer. Andernfalls führen PCA oder andere Techniken, die zum Reduzieren von Dimensionen verwendet werden, zu unterschiedlichen Ergebnissen.

Verwandte Themen