Frage:
Warum müssen wir Daten vor der Hauptkomponentenanalyse (PCA) normalisieren?
jjepsuomi
2013-09-04 13:12:32 UTC
view on stackexchange narkive permalink

Ich mache eine Hauptkomponentenanalyse für meinen Datensatz und mein Professor sagte mir, dass ich die Daten normalisieren sollte, bevor ich die Analyse durchführe. Warum?

  • Was würde passieren, wenn ich PCA ohne Normalisierung durchführen würde?
  • Warum normalisieren wir Daten im Allgemeinen?
  • Könnte jemand ein klares und intuitives Beispiel geben, das die Konsequenzen einer Nichtnormalisierung der Daten vor der Analyse aufzeigt?
Wenn einige Variablen eine große und einige kleine Varianz aufweisen, wird PCA (Maximierung der Varianz) auf die großen Varianzen geladen. Wenn Sie beispielsweise eine Variable von km auf cm ändern (wodurch die Varianz erhöht wird), kann dies von einer geringen Auswirkung zur Dominierung der ersten Hauptkomponente führen. Wenn Sie möchten, dass Ihre PCA von einer solchen Neuskalierung unabhängig ist, können Sie die Variablen standardisieren. Wenn andererseits die spezifische Skala Ihrer Variablen von Bedeutung ist (da Sie möchten, dass Ihre PCA in dieser Skala liegt), möchten Sie möglicherweise nicht standardisieren.
Achtung: Normalisieren in Statistiken hat manchmal die Bedeutung von Transformation, um näher an einer Normal- oder Gaußschen Verteilung zu sein. Wie @Glen_b beispielhaft zeigt, ist es besser, von Standardisierung zu sprechen, wenn gemeint ist, mit (Wert - Mittelwert) / SD (oder einer anderen spezifizierten Standardisierung) zu skalieren.
Autsch, dieses 'Prinzip' anstelle von 'Prinzipal' in meinem Kommentar wird mich jedes Mal verrückt machen, wenn ich es mir ansehe.
@Glen_b Im Prinzip wissen Sie, wie man es buchstabiert. Es ist die Hauptschwierigkeit, es immer richtig zu machen.
Da es sich um mehrere Fragen handelt, gibt es kein genaues Duplikat, aber jede einzelne wird an anderer Stelle auf dieser Website ausführlich und ausführlich besprochen. Eine gute Suche ist zunächst [pca korrel * covariance] (http://stats.stackexchange.com/search?q= [pca] + korrel * + covariance).
@NickCox Die allgemein akzeptierte Definition von Normalisieren besteht darin, eine Zufallsvariable mit einem Mittelwert von Null und einer Standardabweichung von Einheit in eine zu transformieren.Dies gibt Google auch, wenn Sie nach "Normalisieren definieren" suchen.Daher ist es nicht besser, ein anderes Wort für dieselbe Sache zu verwenden.
@Robino Ich stimme Ihrer Schlussfolgerung zu, aber ich stimme Ihrer Behauptung nicht zu.Das Problem ist, dass es keine allgemein akzeptierte Bedeutung für Statistik und maschinelles Lernen gibt.Normalisieren wird mit dem von mir erwähnten Sinn und auch mit anderen Sinnen verwendet, z.Skalierung auf [0, 1].
@NickCox Soll ich die mittlere Normalisierung mit x-mean / std verwenden?Oder verwenden Sie einfach die Feature-Skalierung, bevor Sie pca anwenden. Ich wende pca auf Bilder an, deren Pixelwerte zwischen 0 und 255 variieren.
@Boris Ich kann unmöglich aus der Ferne beraten, was für Sie am besten ist, außer darauf hinzuweisen, dass (x $ - $ mean) / SD eine mögliche Methode ist und sicherlich nicht x $ - $ mean / SD.Wenn alle Ihre Variablen in [0, 255] sind, ist es denkbar, dass eine Nicht-Skalierung genauso sinnvoll ist wie jeder andere Ansatz.
@NickCox bedeutet, dass es keine Rolle spielt
Nicht was ich meinte.Nicht zu wissen, welche Methode für Ihre Daten und Ihr Projekt am besten geeignet ist, bedeutet nicht, dass ich impliziere, dass die Wahl der Methode keine Rolle spielt.
@whuber: Sie erhalten 0 Treffer mit Ihrer Suche.
@MSIS Danke.Irgendwie hat das System den Platzhalter "*" nach "Korrelieren" entfernt.Ich habe es wieder eingefügt und hoffe, dass es diesmal dort bleibt!Es werden jetzt 316 Ergebnisse zurückgegeben.
Zwei antworten:
Dr. Mike
2013-09-04 13:40:05 UTC
view on stackexchange narkive permalink

Normalisierung ist bei PCA wichtig, da es sich um eine Varianzmaximierungsübung handelt. Es projiziert Ihre Originaldaten auf Richtungen, die die Varianz maximieren. Das erste Diagramm unten zeigt den Betrag der Gesamtvarianz, der in den verschiedenen Hauptkomponenten erläutert wurde, in denen wir die Daten nicht normalisiert haben. Wie Sie sehen können, scheint wie wie Komponente 1 den größten Teil der Varianz in den Daten zu erklären.

Without normalization

Wenn Sie sich das zweite Bild ansehen, haben wir zuerst die Daten normalisiert. Hier ist klar, dass auch die anderen Komponenten dazu beitragen. Der Grund dafür ist, dass PCA versucht, die Varianz jeder Komponente zu maximieren. Und da die Kovarianzmatrix dieses bestimmten Datensatzes lautet:

  Murder Assault UrbanPop RapeMurder 18.970465 291.0624 4.386204 22.99141Assault 291.062367 6945.1657 312.275102 519.26906UrbanPop 4.386204 312.2271 pre> 

Aus dieser Struktur wählt die PCA aus, so viel wie möglich in Richtung Assault zu projizieren, da diese Varianz viel größer ist. Um also Funktionen zu finden, die für jede Art von Modell verwendet werden können, würde eine PCA ohne Normalisierung schlechter abschneiden als eine mit Normalisierung.

With normalization

Sie erklären, Standardisierung nicht Normalisierung, aber trotzdem gutes Personal hier :)
@Erogol das ist wahr.
Guter Eintrag!Perfekt reproduzierbar mit sklearn.Übrigens, USArrests-Datensatz kann hier heruntergeladen werden: https://vincentarelbundock.github.io/Rdatasets/datasets.html
Nur neugierig: Wie kommt es, dass die Autokorrelationen in Ihren Daten nicht 1 sind?
@gary Dies ist eine Kovarianzmatrix, keine Korrelationsmatrix, daher sind die diagonalen Elemente nicht unbedingt gleich 1.
David H
2013-09-04 19:14:48 UTC
view on stackexchange narkive permalink

Der Begriff Normalisierung wird in vielen Zusammenhängen mit unterschiedlichen, aber verwandten Bedeutungen verwendet. Normalisieren bedeutet im Grunde genommen transformieren, um normal zu rendern. Wenn Daten als Vektoren betrachtet werden, bedeutet Normalisieren, den Vektor so zu transformieren, dass er die Einheitsnorm hat. Wenn Daten jedoch als Zufallsvariablen vorliegen, bedeutet Normalisieren die Umwandlung in eine Normalverteilung. Wenn angenommen wird, dass die Daten normal sind, bedeutet Normalisieren die Umwandlung in Einheitsvarianz.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...