2016-06-21 37 views
0

Ich habe versucht, den SVM-Algorithmus zu verstehen, und ich kann die Hyperplane-Gleichung nicht vollständig erhalten. Die Gleichung lautet: w. x -b = 0. Was ich verstehe (mit vielen Verwirrungen) ist x ist unbekannt Satz von allen Vektoren, die die Hyperebene bildet und w ist normaler Vektor zu dieser Hyperebene. Wir kennen die w nicht, wir müssen den optimalen w vom Trainingssatz finden.visualisieren Hyperebenen-Gleichung von SVM

Jetzt wissen wir alle, wenn zwei Vektoren senkrecht zueinander stehen, dann ist ihr Skalarprodukt Null. Also, wenn w ist normal zu x dann heißt das, es sollte w sein. x = 0, aber warum heißt es w. x -b = 0 oder w. x = b? (Normal und senkrecht ist die gleiche Sache, oder?) Im normalen Sinne, was ich verstehe, wenn w. x = b, dann w und x ist nicht senkrecht und der Winkel zwischen ihnen ist mehr oder weniger als 90 Grad.

Eine andere Sache ist, in den meisten Tutorials (auch MIT-Professor in seinem lecture) gesagt wird, dass x auf w projiziert, aber ich weiß, wenn ich Projektion nehmen wollen x auf w dann wird es x sein. w/| w | (ohne die Richtung w), nicht nur w. x. Habe ich Recht mit diesem Punkt?

Ich denke, ich vermisse etwas oder etwas falsch zu verstehen. Kann mir jemand dabei helfen?

Antwort

0

Zuerst wird in Einklang stehen:

  • Die Projektion von x auf w ist (x.w/| w | ²) w. Und x. w/| w | ist die Komponente der x in Richtung w (als w/| w | ein Einheitsvektor der Richtung ist w)

Dann könnten Sie verwirrend zwei Dinge:

  1. Wenn x ein Vektor von einer Hyperebene, dann xw = 0 die Gleichung der Hyperebene.Leider möchten wir nicht, dass einer Ihrer x auf der Hyperebene ist.

  2. Im Fall von SVM kennen Sie keinen Vektor x auf der Hyperebene. Stattdessen haben Sie einen Trainingssatz {(x 1, y1), ..., (x N, yN)}, aus dem Sie den Normalvektor w der Hyperebene finden möchten (dann können Sie beschreiben jeder Vektor x dieser Hyperebene zu wissen, dass wx = 0).


Also lassen Sie uns den zweiten Punkt überprüfen, wo Sie einen Datensatz haben {(x 1, y1), ..., (x N, yn)} und Sie finden möchten die Hyperplane-Gleichung, dh ihr Normalvektor w, dank einiger bestimmter Vektoren (genannt der Support-Vektor).

  • Es gibt keinen Grund, warum jede dieser xi sollte w normal sein. Außerdem ist es unmöglich, für alle x auf die Hyperebene normal zu sein (Wenn ja, lassen Sie uns zwei Vektoren betrachten x1! = x2. Dann w.x1 = 0 = w.x2 =>w . (x1-x2) = 0 bedeutet, dass entweder w = 0 oder x1 = x2)

  • Aber wollen, was wir, dass wU> = C, wenn U positiv (eine Seite ist das Hyper Ebene) und w.U < C wenn U negativ (andere Seite der Hyperebene).

  • Ab einem bestimmten U können wir die Vektoren im Datensatz auswählen. Wir erwarten, dass sie sich in einer bestimmten Entfernung D (in der Vorlesung Gosse genannt) dieser Hyperebene befinden. So haben wir w.x i> = C + D wenn yi positiv. Und w.x i < C - D, wenn yi negativ

  • Lasst uns setzen b = C und D = 1 (ohne Beschränkung der Allgemeinheit). Dann w.x ich + b> = 1 wenn yi positiv. w.x i + b < -1 wenn yi negativ.

  • Wenn von Yi multipliziert (gleich 1, wenn x i positiven oder -1 sonst), um es yi führt (wx i + b)> = 1.

  • Schließlich wird durch Nehmen wir den Stützvektor, dh diejenigen, die die Rinne definieren, erhalten wir yi (w.x i + b) - 1 = 0

+0

Was ist der Unterschied zwischen der Projektion von x auf w und der Komponente von x in Richtung von w? –

+0

Nicht viel. Nur dass du normalisierst w so seine Norm | w | wird bei der Projektion von x auf w nicht berücksichtigt. –

+0

ok, von deinem ersten Punkt, was ich verstehe, in der Gleichung w.x-b = 0, x ist nicht die Vektoren auf den Hyperebenen, stattdessen sind es Vektoren aus dem Trainingssatz, bin ich richtig? –