Ist es sinnvoll, PCA und LDA zu kombinieren?

25

Angenommen, ich habe einen Datensatz für eine überwachte statistische Klassifizierungsaufgabe, z. B. über einen Bayes-Klassifizierer. Dieser Datensatz besteht aus 20 Merkmalen, und ich möchte ihn mithilfe von Dimensionalitätsreduktionstechniken wie der Hauptkomponentenanalyse (PCA) und / oder der linearen Diskriminanzanalyse (LDA) auf zwei Merkmale reduzieren.

Beide Techniken projizieren die Daten auf einen kleineren Feature-Unterraum: Mit PCA würde ich die Richtungen (Komponenten) finden, die die Varianz im Datensatz maximieren (ohne Berücksichtigung der Klassenbeschriftungen), und mit LDA hätte ich die Komponenten, die das Dazwischen maximieren Trennung.

Jetzt frage ich mich, ob, wie und warum diese Techniken kombiniert werden können und ob sie sinnvoll sind.

Beispielsweise:

  1. Transformieren des Datensatzes über PCA und Projizieren des Datensatzes auf einen neuen 2D-Unterraum
  2. transformierender (bereits PCA-transformierter) Datensatz über LDA für max. Trennung in der Klasse

oder

  1. Überspringen des PCA-Schritts und Verwenden der Top-2-Komponenten aus einem LDA.

oder jede andere sinnvolle Kombination.

Amöbe sagt Reinstate Monica
quelle
2
Es kann kein Universal geben best practice. PCA und LDA sind als Dimensionalitätsreduktionstechniken sehr unterschiedlich. Manchmal machen Leute PCA vor LDA, aber es birgt das Risiko, wichtige diskriminierende Dimensionen (mit den weggeworfenen PCs) wegzuwerfen. Die Frage, die Sie stellen, wurde auf dieser Website tatsächlich mehrmals in irgendeiner Form gestellt. Bitte suchen Sie "PCA LDA", um zu lesen, was die Leute dazu gesagt haben.
TTNPHNS
@SebastianRaschka: Ich frage mich, ob meine Antwort hier nützlich war, oder haben Sie weitere Fragen zu diesen Themen?
Amöbe sagt Reinstate Monica
@amoeba Entschuldigung, es hat die Antwort bis jetzt nicht gesehen - irgendwie muss es durch die Risse gerutscht sein, danke!

Antworten:

44

Zusammenfassung: PCA kann vor LDA durchgeführt werden, um das Problem zu beheben und eine Überanpassung zu vermeiden.

Erinnern Sie sich, dass LDA-Projektionen über eine neue Komposition von , wobei und Kovarianzmatrizen innerhalb und zwischen Klassen sind. Wenn es weniger als Datenpunkte gibt (wobei die Dimension Ihres Raums ist, dh die Anzahl der Merkmale / Variablen), ist singulär und kann daher nicht invertiert werden. In diesem Fall gibt es einfach keine Möglichkeit, LDA direkt durchzuführen. Wenn Sie jedoch zuerst PCA anwenden, funktioniert dies. @Aaron machte diese Bemerkung in den Kommentaren zu seiner Antwort, und ich bin damit einverstanden (aber nicht einverstanden mit seiner Antwort im Allgemeinen, wie Sie jetzt sehen werden).Σ W Σ B N N Σ WΣW-1ΣBΣWΣBNNΣW

Dies ist jedoch nur ein Teil des Problems. Das größere Bild ist, dass LDA sehr leicht dazu neigt, die Daten zu übertreffen. Beachten Sie, dass die Kovarianzmatrix innerhalb der Klasse in den LDA-Berechnungen invertiert wird . Für hochdimensionale Matrizen ist die Inversion eine sehr sensitive Operation, die nur dann zuverlässig durchgeführt werden kann, wenn die Schätzung von wirklich gut ist. Aber in hohen Dimensionen ist es wirklich schwierig, eine genaue Schätzung von , und in der Praxis muss man oft viel mehr als Datenpunkte haben, um zu hoffen, dass die Schätzung gut ist. Ansonsten N 1 Σ W N Σ WΣWN1ΣWNΣW wird fast singulär sein (dh einige der Eigenwerte werden sehr niedrig sein), und dies wird zu einer Überanpassung führen, dh einer nahezu perfekten Klassentrennung der Trainingsdaten mit zufälliger Leistung der Testdaten.

Um dieses Problem anzugehen, muss man das Problem regulieren . Ein Weg, dies zu tun, besteht darin, zuerst PCA zu verwenden, um die Dimensionalität zu reduzieren. Es gibt andere, wohl bessere, zB die regulierte LDA (rLDA) -Methode, die einfach mit kleinem anstelle von (dies wird als Schrumpfungsschätzer bezeichnet) ), aber zuerst PCA zu machen, ist konzeptionell der einfachste Ansatz und funktioniert häufig einwandfrei.λ W(1-λ)ΣW+λichλΣW

Illustration

Hier ist ein Beispiel für das Problem der Überanpassung. Ich erzeugte 60 Stichproben pro Klasse in 3 Klassen aus der Gaußschen Standardverteilung (Mittelwert Null, Einheitsvarianz) in 10-, 50-, 100- und 150-dimensionalen Räumen und wandte LDA an, um die Daten auf 2D zu projizieren:

Überanpassung in LDA

Beachten Sie, wie mit zunehmender Dimensionalität die Klassen immer besser voneinander getrennt werden, während es in Wirklichkeit keinen Unterschied zwischen den Klassen gibt.

Wir können sehen, wie PCA hilft, die Überanpassung zu verhindern, wenn wir Klassen leicht voneinander trennen. Ich habe 1 zur ersten Koordinate der ersten Klasse, 2 zur ersten Koordinate der zweiten Klasse und 3 zur ersten Koordinate der dritten Klasse hinzugefügt. Jetzt sind sie leicht getrennt, siehe Untergrund oben links:

Überanpassung in LDA und Regularisierung mit PCA

Eine Überanpassung (obere Reihe) ist immer noch offensichtlich. Wenn ich die Daten jedoch mit PCA vorverarbeite und dabei immer 10 Dimensionen (untere Reihe) behalte, verschwindet die Überanpassung, während die Klassen nahezu optimal voneinander getrennt bleiben.

PS. Um Missverständnissen vorzubeugen: Ich behaupte nicht, dass PCA + LDA eine gute Regularisierungsstrategie ist (im Gegenteil, ich würde die Verwendung von rLDA empfehlen), sondern zeige lediglich, dass es sich um eine mögliche Strategie handelt.


Aktualisieren. Ein sehr ähnliches Thema wurde bereits in den folgenden Threads mit interessanten und umfassenden Antworten von @cbeleites behandelt:

Siehe auch diese Frage mit einigen guten Antworten:

Amöbe sagt Reinstate Monica
quelle
Das ist eine großartige Antwort, im Ernst! Und während Sie die zugrunde liegende Theorie erklären, haben Sie auch dort eine schöne praktische Erklärung, eine weitere gute Antwort für meine Referenzsammlung. Vielen Dank!
Ich verstehe die zweite Handlung nicht, es scheint mir, dass die Klassen nicht mit PCA vor LDA (unterste Reihe) getrennt sind
PierreE
@PierreE, im zweiten Diagramm werden die Klassen so generiert, dass sie fast nicht getrennt sind. Die Trennung ist winzig. In der unteren Reihe sehen Sie diese leichte Trennung, aber Sie müssen genau hinschauen: Konzentrieren Sie sich auf die blauen und roten Klassen, und Sie werden sehen, dass eine nach links und eine nach rechts verschoben ist.
Amöbe sagt Reinstate Monica
OK, ich verstehe. Ich habe vergessen, dass die Trennung der Klassen, die wir in der obersten Reihe sehen, tatsächlich übermäßig ist. Danke
PierreE
1

Wenn Sie ein Zwei-Klassen-Problem haben, bringt Sie LDA auf eine Dimension zurück. Es gibt keinen Grund, zuerst eine PCA durchzuführen.

Aaron
quelle
1
Hm, ich folge Ihrer Argumentation hier nicht: Ich bin mir ziemlich sicher, dass die LDA Sie NICHT in die 1-Dimension bringt, es sei denn, Sie entscheiden sich dafür. Dies hängt davon ab, wie viele Eigenvektoren Sie beibehalten möchten, nachdem Sie die Eigenwerte durch Verringern der Werte sortiert haben. Vielleicht fehlt mir hier etwas ... aber ich habe die Anzahl der Klassen nicht erwähnt. Nehmen wir an, wir haben drei Klassen mit jeweils 20 Features, und ich möchte sie auf einen 3D-Unterraum projizieren.
1
Der einzige Grund, zuerst PCA zu machen, ist, wenn die Kovarianzmatrix innerhalb der Klasse singulär ist. Wenn Sie 20 Features und drei Klassen haben, wird es nicht singulär sein, also machen Sie nicht zuerst PCA.
Aaron
4
assume we have 3 classes. @SebastianRaschka: Dann erlaubt LDA dir maximal 2 Diskriminanzfunktionen. Die Anzahl der Eigenwerte in LDA beträgt min (num_groups-1, num_features).
TTNPHNS
@Sebastian Die Anzahl der Diskriminanzfunktionen, die Sie aus LDA auswählen, hängt davon ab, was Sie damit machen möchten. Als Raumtransformation ist es so ziemlich wie eine "überwachte" PCA, und Sie wählen so viele aus, wie Sie möchten. Als ein Hyperebenen- Trennungsklassifizierungsverfahren hat die Hyperebene definitionsgemäß die Dimension N-1. Ich könnte jedoch eine Frage zu diesem Thema für zusätzliche Informationen stellen, da ich immer noch nicht verstehe, woher das min(num_groups-1,num_features)kommt ...
Matthieu
1
@Matthieu Ich glaube, das liegt an der Streumatrix zwischen den Klassen. Sie erstellen sie, indem Sie c-Matrizen (c = Anzahl der Klassen) mit Rang 1 oder weniger hinzufügen. Sie können also nur c-1-Eigenwerte ungleich Null bei max.