Ich habe kürzlich angefangen zu lernen, mit sklearn
etwas zu arbeiten und bin gerade auf dieses merkwürdige Ergebnis gestoßen.
Ich habe den digits
verfügbaren Datensatz verwendet sklearn
, um verschiedene Modelle und Schätzmethoden auszuprobieren.
Als ich ein Support Vector Machine-Modell mit den Daten getestet habe, stellte ich fest, dass es zwei verschiedene Klassen sklearn
für die SVM-Klassifizierung gibt: SVC
und LinearSVC
wobei die erste einen Eins-gegen-Eins- Ansatz und die andere einen Eins-gegen-Ruhe- Ansatz verwendet.
Ich wusste nicht, welche Auswirkungen das auf die Ergebnisse haben könnte, also habe ich beide ausprobiert. Ich habe eine Monte-Carlo-Schätzung durchgeführt, bei der ich beide Modelle 500 Mal durchlaufen habe, wobei die Stichprobe jedes Mal zufällig in 60% Training und 40% Test aufgeteilt und der Fehler der Vorhersage auf dem Testsatz berechnet wurde.
Der reguläre SVC-Schätzer erzeugte das folgende Fehlerhistogramm: Während der lineare SVC-Schätzer das folgende Histogramm erzeugte:
Was könnte für einen so starken Unterschied verantwortlich sein? Warum hat das lineare Modell die meiste Zeit eine so hohe Genauigkeit?
Und was könnte in diesem Zusammenhang die starke Polarisierung der Ergebnisse verursachen? Entweder eine Genauigkeit nahe 1 oder eine Genauigkeit nahe 0, nichts dazwischen.
Zum Vergleich ergab eine Entscheidungsbaumklassifizierung eine viel normalverteilte Fehlerrate mit einer Genauigkeit von etwa 0,85.
Similar to SVC with parameter kernel=’linear’, but implemented in terms of liblinear rather than libsvm, so it has more flexibility in the choice of penalties and loss functions and should scale better (to large numbers of samples).