Kernel-Methoden können für überwachte und unbeaufsichtigte Probleme verwendet werden. Bekannte Beispiele sind die Support Vector Machine bzw. das Kernel Spectral Clustering .
Kernel-Methoden bieten eine strukturierte Möglichkeit, einen linearen Algorithmus in einem transformierten Merkmalsraum zu verwenden, für den die Transformation typischerweise nichtlinear ist (und in einen höherdimensionalen Raum). Der Hauptvorteil dieses sogenannten Kernel-Tricks besteht darin, dass nichtlineare Muster zu einem angemessenen Rechenaufwand gefunden werden können .
Beachten Sie, dass ich sagte, dass die Berechnungskosten angemessen, aber nicht vernachlässigbar sind. Kernel-Methoden konstruieren typischerweise eine Kernel-Matrix mit N der Anzahl der Trainingsinstanzen. Die Komplexität der Kernel-Methoden hängt daher eher von der Anzahl der Trainingsinstanzen als von der Anzahl der Eingabedimensionen ab. Unterstützungsvektormaschinen weisen beispielsweise eine Trainingskomplexität zwischen O ( N 2 ) und O ( N 3 ) auf . Bei Problemen mit sehr großem N ist diese Komplexität derzeit unerschwinglich.K ∈ R.N.× N.N.O ( N.2)O ( N.3)N.
Dies macht Kernel-Methoden aus rechnerischer Sicht sehr interessant, wenn die Anzahl der Dimensionen groß und die Anzahl der Stichproben relativ gering ist (beispielsweise weniger als 1 Million).
Verwandte: Linearer Kernel und nichtlinearer Kernel für Support Vector Machine?
SVM für große Probleme
Bei sehr hochdimensionalen Problemen, wie den 10000
in der Frage erwähnten Dimensionen, ist es häufig nicht erforderlich, einen höherdimensionalen Merkmalsraum abzubilden. Der Eingaberaum ist bereits gut genug. Für solche Probleme sind lineare Methoden um Größenordnungen schneller bei nahezu derselben Vorhersageleistung. Beispiele für diese Methoden finden Sie in LIBLINEAR oder Vowpal Wabbit .
Lineare Methoden sind besonders interessant, wenn Sie viele Samples in einem hochdimensionalen Eingaberaum haben. Wenn Sie nur Samples haben, ist die Verwendung einer nichtlinearen Kernel-Methode ebenfalls günstig (da N klein ist). Wenn Sie beispielsweise 5.000.000 Proben in 10.000 Dimensionen hätten, wären Kernel-Methoden nicht durchführbar.500N.5.000.00010.000
Bei niedrigdimensionalen Problemen mit vielen Trainingsinstanzen (sogenannte große kleine p- Probleme) können lineare Methoden eine schlechte Vorhersagegenauigkeit ergeben. Für solche Probleme bieten Ensemble-Methoden wie EnsembleSVM nichtlineare Entscheidungsgrenzen bei erheblich geringeren Rechenkosten im Vergleich zu Standard-SVM.N.p
RBF
Kernel in verwendelibsvm
, dass er immer überpasst, erreicht der Klassifikator eine hohe Genauigkeit, aber eine geringe Genauigkeit im Testsatz. Und wenn ich vor dem Klassifikator eine Dimensionsreduktion durchführe und die reduzierten Dimensionen nahe an der Anzahl der Trainingsmuster liegen, kann der Klassifikator zwischen Training und Testsatz einen guten Gewinn erzielen. Passen die Ergebnisse zu den meisten empirischen Ergebnissen? Vielen Dank.gamma
für den RBF-Kernel. Der optimale Wert fürgamma
bezieht sich auf die Anzahl der Eingabedimensionen. Der gebräuchlichste Tuning-Ansatz ist die Kreuzvalidierung. Wenn Sie denselben Wert fürgamma
mit und ohne Dimensionsreduzierung verwendet haben, machen Sie wahrscheinlich einen Fehler.grid.py
In-libsvm
Paket, um eine Kreuzvalidierung durchzuführen. Und in den meisten Fällen sind für Daten mit hohen Dimensionen diegamma
immer sehr kleinen, wie z. B.0.00001
diese Ebene.EnsembleSVM
das Cross-Validation-Verfahren Multithreading durchführen? Und ich denke, in der Vorhersagephase wird es gut sein, die riesigen Datenmengen in Batches und Multithreading oder Multi-Maschinen vorherzusagen?esvm-train
und standardmäßig aktiviertesvm-predict
. Verwenden Sie zum Deaktivieren von Multithreading das folgende Flag in diesen Tools :-threads 1
.