Ich habe verstanden, dass SVMs binäre, lineare Klassifizierer sind (ohne den Kernel-Trick). Sie haben Trainingsdaten wo ist ein Vektor und ist die Klasse. Da es sich um binäre lineare Klassifikatoren handelt, besteht die Aufgabe darin, eine Hyperebene zu finden, die die Datenpunkte mit der Bezeichnung trennt von den Datenpunkten mit dem Etikett .
Nehmen wir vorerst an, dass die Datenpunkte linear trennbar sind und wir keine Slack-Variablen benötigen.
Jetzt habe ich gelesen, dass das Trainingsproblem nun das folgende Optimierungsproblem ist:
- st
Ich glaube, ich habe verstanden, dass das Minimieren von das Maximieren des Spielraums bedeutet (ich verstehe jedoch nicht, warum es hier das Quadrat ist. Würde sich etwas ändern, wenn man versuchen würde, \ | w \ | zu minimieren ?).
Ich habe auch verstanden, dass bedeutet, dass das Modell in den Trainingsdaten korrekt sein muss. Es gibt jedoch eine und keine . Warum?
quelle
Antworten:
Erstes Problem: Minimierung vonoder :∥w∥ ∥w∥2
Es ist richtig, dass man die Marge maximieren möchte. Dies geschieht tatsächlich durch Maximieren von . Dies wäre der "richtige" Weg, aber es ist ziemlich unpraktisch. Lassen Sie uns zuerst die , da es sich nur um eine Konstante handelt. Wenn nun maximal ist,muss so klein wie möglich sein. Wir können also die identische Lösung finden, indem wir minimieren .2∥w∥ 2 1∥w∥ ∥w∥ ∥w∥
Schließlich multiplizieren wir, da wir häufig Ableitungen berechnen müssen, den gesamten Ausdruck mit einem Faktor . Dies geschieht sehr oft, denn wenn wir und damit ableiten . So erhalten wir das Problem: Minimieren Sie .12 ddxx2=2x ddx12x2=x 12∥w∥2
tl; dr : ja, minimieren anstelle von würde funktionieren.∥w∥ 12∥w∥2
Zweites Problem: oder :≥0 ≥1
Wie bereits in der Frage angegeben, bedeutet , dass sich der Punkt auf der richtigen Seite der Hyperebene befinden muss. Dies reicht jedoch nicht aus: Wir möchten, dass der Punkt mindestens so weit wie der Rand entfernt ist (dann ist der Punkt ein Unterstützungsvektor) oder sogar noch weiter entfernt.yi(⟨w,xi⟩+b)≥0
Denken Sie an die Definition der Hyperebene.
Diese Beschreibung ist jedoch nicht eindeutig: Wenn wir und mit einer Konstanten skalieren , erhalten wir eine äquivalente Beschreibung dieser Hyperebene. Um sicherzustellen, dass unser Optimierungsalgorithmus und nicht nur um konstante Faktoren skaliert , um einen höheren Rand zu erhalten, definieren wir, dass der Abstand eines Unterstützungsvektors von der Hyperebene immer beträgt , dh der Rand ist . Ein Unterstützungsvektor ist somit gekennzeichnet durch .w b c w b 1 1∥w∥ yi(⟨w,xi⟩+b)=1
Wie bereits erwähnt, möchten wir, dass alle Punkte entweder ein Unterstützungsvektor oder sogar weiter von der Hyperebene entfernt sind. Im Training fügen wir daher die Einschränkung , die genau dies sicherstellt.yi(⟨w,xi⟩+b)≥1
tl; dr : Trainingspunkte müssen nicht nur korrekt sein, sie müssen am Rand oder weiter entfernt sein.
quelle