PCA und zufällige Wälder


12

Für einen kürzlich durchgeführten Kaggle-Wettbewerb habe ich (manuell) 10 zusätzliche Funktionen für mein Trainingsset definiert, die dann zum Trainieren eines zufälligen Waldklassifikators verwendet werden. Ich habe mich entschieden, PCA für das Dataset mit den neuen Funktionen auszuführen, um zu sehen, wie sie miteinander verglichen werden. Ich fand heraus, dass ~ 98% der Varianz von der ersten Komponente (dem ersten Eigenvektor) getragen wurden. Anschließend habe ich den Klassifikator mehrmals geschult und dabei jeweils ein Merkmal hinzugefügt. Anschließend habe ich die Qualität der Klassifizierung anhand von Kreuzvalidierung und RMS-Fehler verglichen. Ich stellte fest, dass sich die Klassifizierungen mit jedem zusätzlichen Merkmal verbesserten und dass das Endergebnis (mit allen 10 neuen Merkmalen) weitaus besser war als der erste Durchlauf mit (sagen wir) 2 Merkmalen.

  • Warum hat sich die Qualität der Klassifikationen so stark verbessert, da PCA behauptet, dass ~ 98% der Varianz in der ersten Komponente meines Datensatzes enthalten sind?

  • Würde dies für andere Klassifikatoren gelten? HF-Skalierung über mehrere Kerne hinweg, daher ist das Trainieren viel schneller als bei (sagen wir) SVM.

  • Was wäre, wenn ich das Dataset in den Bereich "PCA" transformiert und den Klassifizierer für den transformierten Bereich ausgeführt hätte? Wie würden sich meine Ergebnisse ändern?


2
Haben Sie Ihre Daten vor dem Ausführen von PCA normalisiert? Wenn ich raten müsste, würde ich denken, dass eines Ihrer Features viel größer ist als die anderen ...
Marc Shivers

1
Die PCA-Funktion normalisiert bei der Berechnung automatisch alles.
Vishal

1
Vielleicht bin das nur ich, aber können Sie Folgendes klarstellen: Ihr erster Schritt bestand darin, 10 (unformatierte) Funktionen nacheinander hinzuzufügen, oder haben Sie direkt mit PCA-Komponenten gearbeitet? Wie bereits erwähnt, ist dies der erste Fall, und Sie fragen sich, ob Sie direkt mit den Ergebnissen von PCA arbeiten können. Haben Sie in beiden Fällen die PCA auf alle Variablen angewendet, einschließlich neuer Funktionen, oder nur auf die späteren?
CHL

Ich habe die PCA auf die ursprüngliche Matrix mit den 10 zusätzlichen Funktionen angewendet. Anschließend trainierte ich den Klassifikator, indem ich jeweils ein Feature hinzufügte, um die inkrementelle Verbesserung zu messen, die durch das Hinzufügen jedes Features erzielt wurde. Meine Frage war, was passiert, wenn ich den Datensatz (mit den 10 neuen Funktionen) in den PCA-Bereich umwandle und dann den Klassifikator direkt auf dem Datensatz im PCA-Bereich
ausführte

Antworten:


7

Bei der prädiktiven Modellierung versuchen Sie, die Variation der Antwort und nicht die Variation der Features zu erklären. Es gibt keinen Grund zu der Annahme, dass ein möglichst großer Teil der Feature-Variation in ein einzelnes neues Feature einen großen Teil der Vorhersagekraft der Features insgesamt erfasst.

Dies wird häufig als Unterschied zwischen der Regression der Hauptkomponenten und nicht der Regression der kleinsten Teilquadrate erklärt.


"Es gibt keinen Grund zu der Annahme, dass ein Großteil der Feature-Variation in ein einzelnes neues Feature einen großen Teil der Vorhersagekraft der Features insgesamt erfasst." Das war nie der Punkt, und dies würde zu einem sehr verwirrten Klassifikator führen! Das Ziel war eine Reihe von Funktionen, die alle verschiedene Aspekte des Datensatzes veranschaulichen, um den Generalisierungsfehler zu reduzieren. Bei der Ermittlung des PCA wurde untersucht, wie unterschiedlich die Funktionen sind. Und meine Aufgabe bestand darin, dass meine Funktionen nicht so unterschiedlich waren, aber die Ergebnisse von RF immer noch verbessert wurden.
Vishal

1
Die gleiche Logik kann immer noch gelten. Eine neue Funktion ist in hohem Maße kolinnear, wobei eine frühere Funktion noch mehr Vorhersagekraft bringen kann. Speziell für ein randomForest: Wenn das Merkmal "Fast doppelt" im Allgemeinen wichtig ist, wird mit größerer Wahrscheinlichkeit die eine oder andere Version als Aufteilungskandidat ausgewählt.
Shea Parkes

Dies wirft die folgende Frage auf: Wie können Sie a-priori Funktionen für Ihren Klassifikator für zufällige Gesamtstrukturen auswählen, um die Klassifizierung zu verbessern, ohne den Klassifikator tatsächlich auszuführen? Gibt es ein Screening-Verfahren? Wie machst du das? :)
Vishal

Ich kenne keine nützlichen A-priori-Auswahlmethoden. Sie können viele geschachtelte Schleifen von Bedeutung und Auswahl über einige R-Pakete wie Boruta. Ich fand sie auch nicht nützlich. Ich finde es unvernünftig zu glauben, dass ein bestimmtes Merkmal keine Wirkung hat. Ich kann mir vorstellen, dass es nützlich sein könnte, bestimmte Funktionen gegenüber anderen zu betonen, aber der Basis-Zufallsforst-Algorithmus macht das schon ziemlich gut. Wenn Sie so tief in der Modellierung stecken sind und mehr Leistung wünschen, würde ich vorschlagen, andere Algorithmen, einige davon als verstärkte Bäume, mit Ihrem randomForest zu stapeln.
Shea Parkes

1
Sie können einige Trennungsmaße für Ihre Klassen basierend auf Ihren Merkmalen (Jeffries-Matusita-Abstand, Divergenz usw.) von vornherein berechnen. Auf diese Weise können Sie im Allgemeinen herausfinden, welche Funktionen Ihnen bei der Unterscheidung zwischen Klassen helfen. Aufgrund der Funktionsweise von RF ist es jedoch nicht einfach, hier auszuwählen, welche Funktionen die besten Einstellungen für die Klassifizierung bieten. Ein klares Hindernis dabei ist, dass RF selbst variable Wechselwirkungen findet.
JEquihua

6

Die erste Hauptkomponente ist eine lineare Kombination aller Ihrer Funktionen. Die Tatsache, dass fast die gesamte Variabilität erklärt wird, bedeutet lediglich, dass die meisten Koeffizienten der Variablen in der ersten Hauptkomponente signifikant sind.

Jetzt sind die Klassifizierungsbäume, die Sie generieren, auch ein bisschen anders. Sie teilen fortlaufende Variablen binär auf, um die zu klassifizierenden Kategorien optimal voneinander zu trennen. Dies ist nicht dasselbe wie das Finden orthogonaler linearer Kombinationen kontinuierlicher Variablen, die die Richtung der größten Varianz ergeben. Tatsächlich haben wir kürzlich ein Papier über den Lebenslauf diskutiert, in dem PCA für die Clusteranalyse verwendet wurde, und die Autoren haben festgestellt, dass es Situationen gibt, in denen die beste Trennung nicht in den ersten, sondern in den letzten Hauptkomponenten zu finden ist.


3
"Tatsächlich haben wir kürzlich ein Papier zum Lebenslauf besprochen, in dem PCA", haben Sie einen Link dazu? Ich bin sehr interessiert :)
user603

Ich werde nach der Diskussion suchen.
Michael R. Chernick

Wirst du so nett sein, dir die verwandte Frage anzuschauen ?
Nadya
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.