Im Rahmen eines Universitätsauftrages muss ich eine Datenvorverarbeitung für einen ziemlich großen, multivariaten (> 10) Rohdatensatz durchführen. Ich bin kein Statistiker im wahrsten Sinne des Wortes, also bin ich ein wenig verwirrt, was los ist. Entschuldigung im Voraus für die wahrscheinlich lächerlich einfache Frage - mein Kopf dreht sich, nachdem ich mir verschiedene Antworten angesehen und versucht habe, durch die Statistiken zu waten.
Ich habe gelesen, dass:
- Mit PCA kann ich die Dimensionalität meiner Daten reduzieren
- Dies geschieht durch Zusammenführen / Entfernen von Attributen / Dimensionen, die viel miteinander korrelieren (und daher ein wenig unnötig sind).
- Dies geschieht, indem Eigenvektoren anhand von Kovarianzdaten gefunden werden (dank eines netten Tutorials, das ich durchgearbeitet habe, um dies zu lernen).
Was toll ist.
Ich bin jedoch sehr bemüht zu sehen, wie ich dies praktisch auf meine Daten anwenden kann. Zum Beispiel (dies ist nicht der Datensatz, den ich verwenden werde, sondern ein Versuch mit einem anständigen Beispiel, mit dem Menschen arbeiten können), wenn ich einen Datensatz mit so etwas wie ... haben würde.
PersonID Sex Age Range Hours Studied Hours Spent on TV Test Score Coursework Score
1 1 2 5 7 60 75
2 1 3 8 2 70 85
3 2 2 6 6 50 77
... ... ... ... ... ... ...
Ich bin mir nicht ganz sicher, wie ich die Ergebnisse interpretieren würde.
Die meisten Tutorials, die ich online gesehen habe, scheinen mir eine sehr mathematische Sicht auf PCA zu geben. Ich habe einige Nachforschungen angestellt und sie durchgearbeitet - aber ich bin mir immer noch nicht ganz sicher, was das für mich bedeutet, der nur versucht, aus diesem Datenstapel, den ich vor mir habe, irgendeine Art von Bedeutung herauszuholen.
Durch einfaches Durchführen einer PCA für meine Daten (unter Verwendung eines Statistikpakets) wird eine NxN-Zahlenmatrix (wobei N die Anzahl der ursprünglichen Dimensionen ist) ausgespuckt, die für mich völlig griechisch ist.
Wie kann ich PCA machen und das, was ich bekomme, in einer Weise aufnehmen, die ich dann in Klartext in Bezug auf die ursprünglichen Dimensionen ausdrücken kann?
Antworten:
Die Seiten 13-20 des von Ihnen veröffentlichten Lernprogramms enthalten eine sehr intuitive geometrische Erklärung, wie PCA zur Dimensionsreduzierung verwendet wird.
Die von Ihnen erwähnte 13x13-Matrix ist wahrscheinlich die "Lade" - oder "Rotations" -Matrix (ich nehme an, Ihre ursprünglichen Daten hatten 13 Variablen?), Die auf eine von zwei (äquivalenten) Arten interpretiert werden kann:
Die (absoluten Werte der) Spalten Ihrer Ladematrix beschreiben, wie viel jede Variable proportional zu jeder Komponente "beiträgt".
Die Rotationsmatrix rotiert Ihre Daten auf die von Ihrer Rotationsmatrix festgelegte Basis. Wenn Sie also 2D-Daten haben und Ihre Daten mit Ihrer Rotationsmatrix multiplizieren, ist Ihre neue X-Achse die erste Hauptkomponente und die neue Y-Achse die zweite Hauptkomponente.
BEARBEITEN: Diese Frage wird oft gestellt, deshalb werde ich nur eine detaillierte visuelle Erklärung darüber geben, was passiert, wenn wir PCA zur Dimensionsreduzierung verwenden.
Betrachten Sie eine Stichprobe von 50 Punkten, die aus y = x + Rauschen generiert wurden. Die erste Hauptkomponente liegt entlang der Linie y = x und die zweite Komponente liegt entlang der Linie y = -x, wie unten gezeigt.
Das Seitenverhältnis bringt es ein wenig durcheinander, aber nehmen Sie mein Wort dafür, dass die Komponenten orthogonal sind. Durch Anwenden von PCA werden unsere Daten gedreht, sodass die Komponenten zur x- und y-Achse werden:
Die Daten vor der Transformation sind Kreise, die Daten nach sind Kreuze. In diesem speziellen Beispiel wurden die Daten nicht so stark gedreht, wie sie über die Linie y = -2x gespiegelt wurden, aber wir hätten die y-Achse genauso leicht invertieren können, um dies wirklich zu einer Drehung ohne Verlust der Allgemeinheit zu machen, wie hier beschrieben .
Der Großteil der Varianz, dh die Informationen in den Daten, verteilt sich auf die erste Hauptkomponente (die durch die x-Achse dargestellt wird, nachdem wir die Daten transformiert haben). Es gibt eine kleine Abweichung entlang der zweiten Komponente (jetzt der y-Achse), aber wir können diese Komponente ganz ohne signifikanten Informationsverlust fallen lassen . Um dies von zwei Dimensionen auf 1 zu reduzieren, lassen wir die Projektion der Daten auf die erste Hauptkomponente unsere Daten vollständig beschreiben.
Wir können unsere ursprünglichen Daten teilweise wiederherstellen, indem wir sie zurück auf die ursprünglichen Achsen drehen (ok, projizieren).
Die dunkelblauen Punkte sind die "wiederhergestellten" Daten, während die leeren Punkte die ursprünglichen Daten sind. Wie Sie sehen, haben wir einige Informationen aus den Originaldaten verloren, insbesondere die Abweichung in Richtung der zweiten Hauptkomponente. Für viele Zwecke kann diese komprimierte Beschreibung (unter Verwendung der Projektion entlang der ersten Hauptkomponente) jedoch unseren Anforderungen entsprechen.
Hier ist der Code, mit dem ich dieses Beispiel generiert habe, falls Sie es selbst replizieren möchten. Wenn Sie die Varianz der Rauschkomponente in der zweiten Zeile verringern, verringert sich auch die durch die PCA-Umwandlung verlorene Datenmenge, da die Daten auf die erste Hauptkomponente konvergieren:
quelle
prcomp
bei der die Ladematrix nur die Matrix ist, deren Spalten Einheitseigenvektoren sind. Ich denke, Sie sind unnötig technisch und in den meisten Fällen glaube ich, dass diese Begriffe synonym verwendet werden.Ich würde sagen, Ihre Frage ist nicht nur in,
cross validated
sondern auch in eine qualifizierte Fragestack overflow
, in der Sie erfahren, wie Sie die Dimensionsreduzierung in R (...) implementieren, um effektiv zu ermitteln, welche Spalte / Variable zur Varianz von besser beiträgt den gesamten Datensatz.Die PCA (Principal Component Analysis) hat die gleiche Funktionalität wie die SVD (Singular Value Decomposition) und ist nach dem Anwenden
scale
/ der Z-Transformation auf den Datensatz genau der gleiche Prozess .Hier sind einige Ressourcen, die Sie in einer halben Stunde durchgehen können, um ein besseres Verständnis zu erlangen.
Ich bin nicht in der Lage, eine anschauliche Codierungslösung zu geben, mit der Sie verstehen, wie man svd implementiert und was die einzelnen Komponenten bewirken. Die Leute sind jedoch großartig. Hier sind einige sehr informative Beiträge, die ich verwendet habe, um mit der Anwendungsseite von SVD Schritt zu halten, auch wenn ich weiß wie man ein 3by3 SVD Problem von Hand berechnet .. :)
quelle
In PCA möchten Sie die Daten in weniger Variablen beschreiben. Sie können die gleichen Informationen in weniger Variablen erhalten als mit allen Variablen. Zum Beispiel könnten die untersuchten Stunden und die Testergebnisse korreliert sein und wir müssen nicht beide einbeziehen.
Nehmen wir in Ihrem Beispiel an, Sie möchten messen, wie "gut" ein Schüler / eine Person ist. Wenn man sich all diese Variablen ansieht, kann es verwirrend sein, zu sehen, wie das gemacht wird. Mit PCA können wir klar erkennen, welche Schüler gut oder schlecht sind.
Wenn die erste Hauptkomponente den größten Teil der Variation der Daten erklärt, dann ist dies alles, was wir brauchen. Sie würden die Korrelation zwischen dieser Komponente und allen Variablen finden. "Große" Korrelationen kennzeichnen wichtige Variablen. Zum Beispiel könnte die erste Komponente stark mit den untersuchten Stunden und dem Testergebnis korreliert sein. Hohe Werte der ersten Komponente weisen also auf hohe Werte der Lernzeit und der Testergebnisse hin.
quelle