In einer SVM suchen Sie nach zwei Dingen: einer Hyperebene mit dem größten minimalen Rand und einer Hyperebene, die so viele Instanzen wie möglich korrekt trennt. Das Problem ist, dass Sie nicht immer beides bekommen können. Der Parameter c bestimmt, wie groß Ihr Wunsch nach letzterem ist. Ich habe ein kleines Beispiel unten gezeichnet, um dies zu veranschaulichen. Links haben Sie ein niedriges c, was Ihnen einen ziemlich großen Mindestrand (lila) gibt. Dies setzt jedoch voraus, dass wir den blauen Kreisausreißer, den wir nicht richtig klassifiziert haben, vernachlässigen. Rechts hast du ein Hoch c. Jetzt werden Sie den Ausreißer nicht vernachlässigen und haben einen viel kleineren Spielraum.
Welche dieser Klassifikatoren sind also die besten? Das hängt davon ab, wie die zukünftigen Daten aussehen, die Sie vorhersagen werden, und meistens wissen Sie das natürlich nicht. Wenn die zukünftigen Daten so aussehen:
dann ist der mit einem großen c-Wert erlernte Klassifikator am besten.
Auf der anderen Seite, wenn die zukünftigen Daten so aussehen:
dann ist der mit einem niedrigen c-Wert erlernte Klassifikator am besten.
Abhängig von Ihrem Datensatz kann das Ändern von c eine andere Hyperebene erzeugen oder nicht. Wenn es tut , eine andere Hyperebene erzeugen, das bedeutet nicht , dass Ihre Klassifikator verschiedene Klassen , für die speziellen Daten werden Sie es verwendet haben , zu klassifizieren. Weka ist ein gutes Tool zum Visualisieren von Daten und zum Herumspielen mit verschiedenen Einstellungen für eine SVM. Dies kann Ihnen helfen, eine bessere Vorstellung davon zu bekommen, wie Ihre Daten aussehen und warum das Ändern des c-Werts den Klassifizierungsfehler nicht ändert. Im Allgemeinen erleichtern wenige Trainingsinstanzen und viele Attribute die lineare Trennung der Daten. Auch die Tatsache, dass Sie Ihre Trainingsdaten und keine neuen unsichtbaren Daten auswerten, erleichtert die Trennung.
Aus welchen Daten möchten Sie ein Modell lernen? Wie viele Daten? Können wir es sehen?