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={(xi1,xi2,yi)}yi{1,−1}1−1
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 2 ≥ 0 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+ w1Xje1+ w2Xje2≥ 0Xjeyje= 1w0+ w1Xje1+ w2Xje2< 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|sous réserve de : w0+ w1Xje1+ w2Xje2≥ 0 , ∀ xje avec yje= 1w0+ w1Xje1+ w2Xje2< 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+ w1Xje1+ w2Xje2≥ 0Xjeyje= 1w0+ w1Xje1+ w2Xje2< 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+ w1Xje1+ w2Xje2≥ 1Xjeyje= 1w0+ w1Xje1+ w2Xje2≤ - 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 .1∥ w ∥2
Nous obtenons donc le problème d'optimisation suivant,
max 1∥ w ∥2sous réserve de : w0+ w1Xje1+ w2Xje2≥ 1 , ∀ xje avec yje= 1w0+ w1Xje1+ w2Xje2≤ - 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.
min ∥ w ∥2sous réserve de : yje( w0+ w1Xje1+ w2Xje2) ≥ 1 , ∀ i
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 ) ≥ 1≥ 1
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
∥ w ∥2∥ x+- x-∥2= 2
∥ x+- x-∥2= 2∥ w ∥2
1- 1