一、SVM简介
支持向量机(suport vector mechine,SVM)主要用于解决二分类问题。这里简单介绍一下线性SVM,希望能对SVM的入门者有所帮助。
SVM是如何对样本对进行分类的呢?假设我们有一组数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } D=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\} D={
(x1,y1),(x2,y2),...,(xn,yn)},其中 x i x_i xi是第 i i i个实例, y i y_i yi是 x i x_i xi的分类标签,并且有 y i ∈ { − 1 , 1 } y_i∈\{-1,1\} yi∈{
−1,1}。SVM通过一个超平面 ω ⋅ x + b = 0 \omega·x+b=0 ω⋅x+b=0将不同类别的实例 x i x_i xi划分开,如下图。
二、分清 几何间隔 与 函数间隔
对于各个实例点,其到超平面的几何间隔为 d i = ∣ w . x i + b ∣ ∣ ∣ w ∣ ∣ = y i ( w ∣ ∣ w ∣ ∣ . x i + b ∣ ∣ w ∣ ∣ ) . . . ( 1 ) d_i=\frac{|w.x_i+b|}{||w||}=y_i(\frac{w}{||w||}.x_i+\frac{b}{||w||}) \ \ ...\ \ (1) di=∣∣w∣∣∣w.xi+b∣=yi(∣∣w∣∣w.xi+∣∣w∣∣b) ... (1)如果你了解平面上点到直线的距离公式,你应该会很快了解这个公式的意义。除了几何间隔,还有一个定义叫做函数间隔,公式为: ( d l ) i = ∣ w . x i + b ∣ = y i ( w . x i + b ) . . . ( 2 ) (d_l)_i=|w.x_i+b|=y_i(w.x_i+b) \ \ ...\ \ (2) (dl)i=∣w.xi+b∣=yi(w.xi+b) ... (2)
我们定义 d = m i n d i d=min \ d_i d=min di, d l = m i n ( d l ) i d_l=min (d_l)_i dl=min(dl)i,不难得出, d l d_l dl与 d d d的关系为 d l = d ⋅ ∣ ∣ w ∣ ∣ . . . ( 3 ) d_l=d·||w|| \ \ ...\ \ (3) dl=d⋅∣∣w∣∣ ... (3)
三、我们希望优化什么?
我们希望优化 d d d,使得d最大。相比于所有实例点距离超平面很近,我们希望更希望这些点距离超平面很远,因为这样会使我们更确信这个超平面能够将两种类别的实例分开。
仅仅优化 d d d就足够了吗?不够,我们不希望 y i ( w ∣ ∣ w ∣ ∣ . x i + b ∣ ∣ w ∣ ∣ ) y_i(\frac{w}{||w||}.x_i+\frac{b}{||w||}) yi(∣∣w∣∣w.xi+∣∣w∣∣b)小于d,因此我们还需要加上 y i ( w ∣ ∣ w ∣ ∣ . x i + b ∣ ∣ w ∣ ∣ ) > = d y_i(\frac{w}{||w||}.x_i+\frac{b}{||w||})>=d yi(∣∣w∣∣w.xi+∣∣w∣∣b)>=d的约束条件。
于是我们得到我们需要优化的目标: m a x d s . t . y i ( w ∣ ∣ w ∣ ∣ . x i + b ∣ ∣ w ∣ ∣ ) > = d max\ \ d \\ s.t. \ \ y_i(\frac{w}{||w||}.x_i+\frac{b}{||w||})>=d max ds.t. yi(∣∣w∣∣w.xi+∣∣w∣∣b)>=d
将 d d d换成 d l d_l dl,
m a x d l ∣ ∣ w ∣ ∣ s . t . y i ( w . x i + b ) > = d l max\ \ \frac{d_l}{||w||} \\ s.t. \ \ y_i(w.x_i+b)>=d_l max ∣∣w∣∣dls.t. yi(w.xi+b)>=dl
设定函数间隔 d l = 1 d_l=1 dl=1,并且不影响 d d d,因为根据公式(2)当 d l d_l dl扩倍n的话, ∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣也会扩倍n,则根据公式(3),有 d = n . d l n . ∣ ∣ w o l d ∣ ∣ = 1 ∣ ∣ w n e w ∣ ∣ d=\frac{n.d_l}{n.||w_{old}||}=\frac{1}{||w_{new}||} d=n.∣∣w