Étant donné un ensemble de points dans un espace bidimensionnel, comment peut-on concevoir une fonction de décision pour SVM?

10

Quelqu'un peut-il m'expliquer comment on conçoit une fonction de décision SVM? Ou pointez-moi vers une ressource qui discute d'un exemple concret.

ÉDITER

Pour l'exemple ci-dessous, je peux voir que l'équation sépare les classes avec une marge maximale. Mais comment puis-je ajuster les poids et écrire des équations pour les hyperplans sous la forme suivante.X2=1,5

H1:w0+w1X1+w2X21pourOuije=+1H2:w0+w1X1+w2X2-1pourOuije=-1.

entrez la description de l'image ici

J'essaie d'obtenir la théorie sous-jacente dans l'espace 2D (car c'est plus facile à visualiser) avant de penser à des dimensions plus élevées.

J'ai trouvé une solution pour cela. Quelqu'un peut-il confirmer si c'est correct?

le vecteur de poids est (0, -2) et W_0 est 3

H1:3+0X1-2X21pourOuije=+1H2:3+0X1-2X2-1pourOuije=-1.
naresh
la source
Il y a une illustration avec R ici , mais je pense que votre question est plus sur l'aspect algorithmique. Dans ce cas, il serait utile que vous puissiez ajouter un peu plus de détails sur l'application envisagée ou la ressource disponible.
chl
@chl J'ai mis à jour la question avec des détails
naresh

Réponses:

12

Il existe au moins deux façons de motiver les SVM, mais je prendrai ici l'itinéraire le plus simple.

Maintenant, oubliez tout ce que vous savez sur SVM pour le moment et concentrez-vous simplement sur le problème actuel. On vous donne un ensemble de points ainsi que quelques étiquettes ( y i ) qui sont de { 1 , - 1 } . Maintenant, nous essayons de trouver une ligne en 2D de telle sorte que tous les points avec l'étiquette 1 tombent d'un côté de la ligne et tous les points avec l'étiquette - 1 tombent de l'autre côté.D={(x1i,x2i,yi)}yi{1,1}11

Tout d'abord, réalisez que est une ligne en 2D et w 0 + w 1 x 1 + w 2 x 2 > 0 représente "un côté" de la ligne et w 0 + w 1 x 1 + w 2 x 2 < 0 représente "l'autre côté" de la ligne.w0+w1x1+w2x2=0w0+w1x1+w2x2>0w0+w1x1+w2x2<0

De ce qui précède, nous pouvons conclure que nous voulons un vecteur tel que, w 0 + w 1 x i 1 + w 2 x i 20 pour tous les points x i avec y i = 1 et w 0 + w 1 x i 1 + w 2 x i 2 < 0[w0,w1,w2]w0+w1X1je+w2X2je0Xjeyje=1w0+w1X1je+w2X2je<0pour tous les points avec y i = - 1 [1].Xjeyje=-1

Supposons qu'une telle ligne existe réellement, alors je peux définir un classificateur de la manière suivante,

min|w0|+|w1|+|w2|sujet à:w0+w1X1je+w2X2je0,Xje avec yje=1w0+w1X1je+w2X2je<0,Xje avec yje=-1

J'ai utilisé une fonction objective arbitraire ci-dessus, nous ne nous soucions pas vraiment pour le moment de la fonction objective utilisée. Nous voulons juste un qui réponde à nos contraintes. Puisque nous avons supposé qu'une ligne existe de telle sorte que nous pouvons séparer les deux classes avec cette ligne, nous trouverons une solution au problème d'optimisation ci-dessus.w

Ce qui précède n'est pas SVM mais il vous donnera un classificateur :-). Cependant, ce classificateur peut ne pas être très bon. Mais comment définissez-vous un bon classificateur? Un bon classificateur est généralement celui qui fonctionne bien sur l'ensemble de test. Idéalement, vous devriez passer en revue tous les possibles qui séparent vos données d'entraînement et voir lesquels d'entre eux fonctionnent bien sur les données de test. Cependant, il existe des w infinis , c'est donc tout à fait désespéré. Au lieu de cela, nous considérerons quelques heuristiques pour définir un bon classificateur. Une heuristique est que la ligne qui sépare les données sera suffisamment éloignée de tous les points (c'est-à-dire qu'il y a toujours un écart ou une marge entre les points et la ligne). Le meilleur classificateur parmi ceux-ci est celui avec la marge maximale. C'est ce qui est utilisé dans les SVM.ww

Au lieu d'insister sur le fait que pour tous les points x i avec y i = 1 et w 0 + w 1 x i 1 + w 2 x i 2 < 0 pour tous les points x i avec y i = - 1 , si nous insistons pour que w 0 +w0+w1X1je+w2X2je0Xjeyje=1w0+w1X1je+w2X2je<0Xjeyje=-1 pour tous les points x i avec y i = 1 et w 0 + w 1 x i 1 + w 2 x i 2- 1 pour tous les points x i avec y i = - 1w0+w1X1je+w2X2je1Xjeyje=1w0+w1X1je+w2X2je-1Xjeyje=-1, alors nous insistons pour que les points soient loin de la ligne. La marge géométrique correspondant à cette exigence se révèle être .1w2

Nous obtenons donc le problème d'optimisation suivant,

max1w2sujet à:w0+w1X1je+w2X2je1,Xje avec yje=1w0+w1X1je+w2X2je-1,Xje avec yje=-1
Une forme d'écriture légèrement succincte est, Il s'agit essentiellement de la formulation SVM de base. J'ai sauté pas mal de discussions par souci de concision. Avec un peu de chance, j'ai réussi à faire passer l'essentiel de l'idée.
minw2sujet à:yje(w0+w1X1je+w2X2je)1,je

Script CVX pour résoudre l'exemple de problème:

A = [1 2 1; 3 2 1; 2 3 1; 3 3 1; 1 1 1; 2 0 1; 2 1 1; 3 1 1];
b = ones(8, 1);
y = [-1; -1; -1; -1; 1; 1; 1; 1];
Y = repmat(y, 1, 3);
cvx_begin
variable w(3)
minimize norm(w)
subject to
(Y.*A)*w >= b
cvx_end

Addendum - Marge géométrique

wyje(w0+w1X1+w2X2)1yje(w0+wTX)11

X+wTX++w0=1X-wTX-+w0=-1X+X-X+-X-

X+-X-2

wTX++w0=1
wTX-+w0=-1
wT(X+-X-)=2
|wT(X+-X-)|=2
w2X+-X-2=2
X+-X-2=2w2

1-1

TenaliRaman
la source
1
w=[0,-2,3]
1
@entropy merci J'ai corrigé la faute de frappe. J'ajouterai l'explication de la marge géométrique.
TenaliRaman
1
@entropy J'ai mis à jour la réponse avec l'explication de la marge géométrique.
TenaliRaman
1
wTX
1
@entropy Cela dit, vous avez peut-être compris maintenant que si vous faites correctement pivoter et déplacer les points, même une ligne passant par l'origine devrait pouvoir séparer les classes. Cependant, il n'est généralement pas facile de trouver cette rotation et ce décalage corrects, par rapport à l'apprentissage du terme de biais.
TenaliRaman