Der allgemeine Ansatz zur Auswahl eines optimalen Kernels (entweder der Kerneltyp oder der Kernelparameter) in einer kernelbasierten Methode ist die Kreuzvalidierung. Hier finden Sie Erläuterungen zur Kernelauswahl für Support-Vektor-Maschinen: Wie wähle ich den Kernel für SVM aus?
Die Idee hinter der Kreuzvalidierung ist, dass wir einige "Test" -Daten weglassen, unseren Algorithmus ausführen, um das Modell an die verbleibenden "Trainings" -Daten anzupassen, und dann überprüfen, wie gut das resultierende Modell die Testdaten beschreibt (und wie groß der Fehler ist ist). Dies wird für verschiedene ausgelassene Daten wiederholt, Fehler werden gemittelt, um einen durchschnittlichen kreuzvalidierten Fehler zu bilden, und dann können verschiedene Algorithmen verglichen werden, um einen auszuwählen, der den niedrigsten Fehler ergibt. In SVM kann man zB verwenden Klassifizierungsgenauigkeit (oder verwandte Kennzahlen) als Maß für die Modellleistung verwenden. Dann würde man einen Kernel auswählen, der die beste Klassifizierung der Testdaten liefert.
Die Frage lautet dann: Welches Maß für die Modellleistung kann man in kPCA verwenden?Wenn Sie eine "gute Datentrennung" erreichen möchten (vermutlich eine gute Klassentrennung), können Sie diese irgendwie an den Trainingsdaten messen und diese verwenden, um den besten Kernel zu finden. Beachten Sie jedoch, dass PCA / KPCA nicht gut Datentrennung zu erhalten entworfen (sie nehmen nicht Klasse Etiketten berücksichtigt überhaupt ). Im Allgemeinen möchte man also ein anderes, klassenunabhängiges Maß für die Modellleistung.
In Standard-PCA kann man verwenden Rekonstruktionsfehler als Leistungsmaß für den Testsatz verwendet werden. In der Kernel-PCA kann man auch einen Rekonstruktionsfehler berechnen, aber das Problem ist, dass er nicht zwischen verschiedenen Kerneln vergleichbar ist: Der Rekonstruktionsfehler ist die Entfernung, die im Zielmerkmalsraum gemessen wird; und verschiedene Kernel entsprechen verschiedenen Zielräumen ... Wir haben also ein Problem.
Eine Möglichkeit, dieses Problem anzugehen, besteht darin, den Rekonstruktionsfehler im ursprünglichen Raum und nicht im Zielraum zu berechnen. Offensichtlich befindet sich der ausgelassene Testdatenpunkt im ursprünglichen Raum. Aber seine kPCA-Rekonstruktion lebt im [niedrigdimensionalen Unterraum] des Zielraums. Was man jedoch tun kann, ist, einen Punkt ("Vorbild") im ursprünglichen Raum zu finden, der so nahe wie möglich an diesem Rekonstruktionspunkt abgebildet wird, und dann den Abstand zwischen dem Testpunkt und diesem Vorbild zu messen als Rekonstruktionsfehler.
Ich werde hier nicht alle Formeln angeben, sondern Sie auf einige Artikel verweisen und hier nur einige Zahlen einfügen.
Die Idee des "Pre-Image" in kPCA wurde anscheinend in diesem Artikel vorgestellt:
- Mika, S., Schölkopf, B., Smola, AJ, Müller, KR, Scholz, M. & Rätsch, G. (1998). Kernel-PCA und Entrauschen in Feature-Spaces . In NIPS (Bd. 11, S. 536-542).
Mika et al. führen keine Kreuzvalidierung durch, benötigen jedoch Vorbilder zum Entrauschen, siehe folgende Abbildung:
Entrauschte (dicke) Punkte sind Vorbilder von kPCA-Projektionen (hier gibt es keinen Test und kein Training). Es ist keine triviale Aufgabe, diese Vorbilder zu finden: Man muss den Gradientenabstieg verwenden, und die Verlustfunktion hängt vom Kernel ab.
Und hier ist ein kürzlich veröffentlichtes Papier, in dem Vorbilder für Kreuzvalidierungszwecke und zur Auswahl von Kernel / Hyperparametern verwendet wurden:
Dies ist ihr Algorithmus:
Und hier sind einige Ergebnisse (die meiner Meinung nach ziemlich selbsterklärend sind):