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:
- Transformieren des Datensatzes über PCA und Projizieren des Datensatzes auf einen neuen 2D-Unterraum
- transformierender (bereits PCA-transformierter) Datensatz über LDA für max. Trennung in der Klasse
oder
- Überspringen des PCA-Schritts und Verwenden der Top-2-Komponenten aus einem LDA.
oder jede andere sinnvolle Kombination.
quelle
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.Antworten:
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Σ- 1WΣB ΣW ΣB N N Σ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ΣW N≫ 1 ΣW N Σ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+ λ I λ Σ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:
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:
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:
quelle
Wenn Sie ein Zwei-Klassen-Problem haben, bringt Sie LDA auf eine Dimension zurück. Es gibt keinen Grund, zuerst eine PCA durchzuführen.
quelle
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).min(num_groups-1,num_features)
kommt ...