SVM的原理及推导

SVM的原理及推导

我们直接用数学公式来描述我们要解决的问题。假设我有一个数据集 D \mathcal{D} ,总共有m个样本 { x i , y i } , i = 1 , . . . , n \{x_i, y_i\}, i=1, ..., n 。其中。其中 x i R d x_i \in \mathbb{R}^d 是维的向量,是二类分类问题的标签,是d维的向量,y是二类分类问题的标签, y i { 1 , + 1 } y_i \in \{-1, +1\} 。我们首先假设我们的数据是完美的,即,在维度的平面上,我们的数据是线性可分的,那么我们就可以画一条直线。我们首先假设我们的数据是完美的,即,在维度d的平面上,我们的数据是线性可分的,那么我们就可以画一条直线 f ( x ) = w T x + b f(x)=w^Tx+b 使得我们所有的不同类别的样本区分开来,即对于所有使得我们所有的不同类别的样本区分开来,即对于所有 y i = 1 y_i=-1 的样本的样本 i i w T x + b 0 w^Tx+b \leq 0 ,反之对于所有,反之对于所有 y i = + 1 y_i = +1 的样本有的样本有 w T x + b 0 w^Tx+b \geq 0

但是,如果我们只是单纯的规定 w T x + b = 0 w^Tx+b=0 作为超平面来区分正负样本,这样的超平面有很多,任何一个超平面符合上述条件都可以作为解,而这对分类的泛化性并不友好。也就是说,当超平面实际上选取很差时,对于测试数据,一点微小的噪声就会导致它的错分。所以SVM定义了另外两个超平面(支持超平面 Supporting Hyperplane),都与 w T x + b = 0 w^Tx+b=0 平行,到超平面的距离(边际 Margin)分别为 d d_- d + d_+ ,并且保持 d = d + d_-=d_+ 。我们将这两个超平面用公式表示:
w T x = b σ w T x = b + σ w^Tx = b-\sigma \\ w^Tx = b+\sigma
我们注意到,如果将公式的左右两边同时乘以一个系数,公式仍然成立。而且这个公式存在着过参数化。因此SVM规定了这个 σ = 1 \sigma = 1 。那么边际大小 γ = d + d + \gamma = d_-+d_+ 就等于:
γ = 2 w \gamma = \frac{2}{\|w\|}

至此我们已经决定了我们所要得到的优化目标,即找到一个超平面 w T x + b = 0 w^Tx+b=0 使得它存在两个与之平行、与之距离为 1 1 并分布两侧的超平面,能够完美分开所有的训练数据,使得正样本在 w T x + b 1 w^Tx+b \geq 1 ,负样本 w T x + b 1 w^Tx+b \leq -1 。我们把问题写成凸优化问题的形式:(这里强调一点,源自于Convex Optimization那门课中,很多人把优化公式中的max和maximize,min和minimize混为一谈,实际上是不正确的,min/max返回的是一个值,即最小/大值,只有maximize/minimize代表着优化目标函数。)
m a x i m i z e    2 w s . t .    y i ( w T x + b ) 1 0 ,   i = 1 , . . . , m \begin{aligned} \mathop{maximize}&~~\frac{2}{\|w\|}\\ s.t. &~~y_i(w^Tx+b) -1 \geq 0 , ~i=1,...,m \end{aligned}
由于 2 w \frac{2}{\|w\|} 是个concave的函数,我们便可以通过倒数的方式转成convex的标准形式,这里加平方应该是要为了是让曲线保证平滑来保证处处可导(这里不是很确定,如果说的不对请大家指出谢谢),即:
m i n i m i z e    1 2 w 2 s . t .    y i ( w T x + b ) 1 0 ,   i = 1 , . . . , m \begin{aligned} minimize&~~\frac{1}{2}\|w\|^2\\ s.t. &~~y_i(w^Tx+b) -1 \geq 0 , ~i=1,...,m \end{aligned}
对于刚好落在支持超平面上的点,我们就将他们成为支持向量(Support Vector)
这个问题,可以通过**拉格朗日法(Lagrangian)**转换成对偶问题求解。

首先,我们将约束条件乘以一个 λ i \lambda_i 加入到优化函数 f 0 ( x ) f_0(x) 中。随后根据拉格朗日法求对偶问题的定义,我们可以得到:
L ( w , b , λ i ) = inf w , b 1 2 w 2 i m λ i [ y i ( w T x + b ) 1 ] \mathcal{L}(w,b,\lambda_i)=\mathop{\inf}_{w,b}\frac{1}{2}\|w\|^2-\sum_{i}^{m}\lambda_i[y_i (w^Tx+b)-1]
我们仔细看 L \mathcal{L} 这个公式,要求关于 w w b b 的下界,实际上,对于 w w 来说,是一个二次型 w T w w^Tw 加上一个累加的Affine映射 i m λ i y i w T x \sum_i^m \lambda_i y_i w^Tx ,那么这些都是保持凸函数性质的运算。对于 b b 来说,是一个Affine映射。因此对于 w w b b 而言, L \mathcal{L} 是一个凸函数,在求下界时,我们可以直接通过求导函数为0的点来计算Optimal(全局最优)。

那么我们分别对 w w b b 求导并求等于0的点:
L w = w i m λ i y i x i = 0 L b = i m λ i y i = 0 \begin{aligned} \frac{\partial \mathcal{L}}{\partial w}&=w-\sum_i^m \lambda_iy_ix_i&=0 \\ \frac{\partial \mathcal{L}}{\partial b}&=\sum_i^m{\lambda_iy_i}=0 \end{aligned}
随后我们将求导得到的结果带回到 L \mathcal{L} 中,得到:
L = 1 2 w T w + i m λ i i m λ i y i w T x i i m λ i y i b = 1 2 i m λ i y i x i 2 + i m λ i i m λ i y i ( i m λ i y i x i ) T x i = i m λ i 1 2 ( i m λ i y i x i T ) ( i m λ i y i x i ) = i m λ i 1 2 i m j m λ i λ j y i y j x i T x j \begin{aligned} \mathcal{L}&=\frac{1}{2}w^Tw+\sum_i^m\lambda_i-\sum_i^m\lambda_iy_iw^Tx_i-\sum_i^m\lambda_iy_ib \\ &=\frac{1}{2}\|\sum_i^m\lambda_iy_ix_i\|^2+\sum_i^m\lambda_i-\sum_i^m\lambda_iy_i(\sum_i^m\lambda_iy_ix_i)^Tx_i\\ &=\sum_i^m\lambda_i-\frac{1}{2}(\sum_i^m\lambda_iy_ix_i^T)(\sum_i^m\lambda_iy_ix_i)\\ &=\sum_i^m\lambda_i-\frac{1}{2}\sum_i^m\sum_j^m\lambda_i\lambda_jy_iy_jx_i^Tx_j \end{aligned}
此时,对偶问题就可以被描述为:
m a x i m i z i    i m λ i 1 2 i m j m λ i λ j y i y j x i T x j s . t .    λ i 0 ,   i = 1 , . . . , m \begin{aligned} \mathop{maximizi}&~~\sum_i^m\lambda_i-\frac{1}{2}\sum_i^m\sum_j^m\lambda_i\lambda_jy_iy_jx_i^Tx_j \\ s.t.&~~\lambda_i \geq 0, ~i=1,...,m \end{aligned}
这个问题可以通过SMO算法去求解,这里就不详细赘述了。其实在整个Convex Optimization的课程中,也没有过于强调如何去解各种凸优化问题,主要还是在介绍如何将各种问题转成可解的凸优化形式。只要转成很好解的形式,就会有各种成熟的工具去进行求解。

猜你喜欢

转载自blog.csdn.net/sinat_33329855/article/details/85530702