zoukankan      html  css  js  c++  java
  • SVM(一)——从最基础地慢慢说

    SVM仔细梳理一下,好像也就是那么几个重要的东西◔ ‸◔? 但是、但是其中涉及到的数学知识好多啊ε=(´ο`*))),所以这次想从最基础地慢慢来,把所有公式重新推导一遍~~~

    超平面、间隔

    先从超平面说起,我觉得这是一个很抽象的东西
    划分超平面可以通过如下线性方程来描述:

    [w^Tx+b=0 ]

    其中(w=(w_1;w_2;ldots;w_d))为法向量,决定了超平面的方向,b为位移项,决定了超平面与原点之间的距离。
    (w^T)为什么是超平面的法向量呢?我们来简单地证明一下~
    在超平面上任取两点(P_1=(x_1,ldots,x_n)),(P_2=(x'_1,dots,x'_n)),则两点满足平面方程组

    [left{ egin{array}{c} w^TP_1+b=0 \ w^TP_2+b=0 end{array} ight. ]

    两式相减得(w^T(P_1-P_2)=0),即(w^T)正交于该超平面上任意向量,所以(w^T)为超平面法向量。

    空间中任意样本点到超平面的距离为$$ r=frac{|w^T+b|}{||w||}$$,这个公式其实就是高中学过的点((x^{(i)},y^{(i)}))到直线(ax+by+c=0)的距离(d=frac{|ax^{(i)}+by^{(i)}+c|}{sqrt{a^2+b^2}})推广到高维上~
    我们得到的这个距离公式(r=frac{|w^T+b|}{||w||})实际上就是所谓的几何间隔,几何间隔有一个很重要的性质就是改变参数((w,b))的大小不影响间隔,即如果改变参数((w,b))((2w,2b)),则几何间隔不会改变,也就是说分类超平面是不会改变的。这个性质看一眼超平面距离公式就很容易得出来啦,因为有分母(||w||)的存在,就像是在标准化。而这就是函数间隔和几何间隔的区别,几何间隔就是归一化了的函数间隔。
    假设超平面能够将训练样本正确分类,即对于((x_i,y_i)in D),若(y_i=+1),则有(w^Tx_i+b>0);若(y_i=-1),则有(w^Tx_i+b<0),那么有

    [left{ egin{array}{c} w^Tx_i+bgeq+1, &y_i=+1;\ w^Tx_i+bleq-1, &y_i=-1. end{array} ight. ]

    如果还记得刚刚说的几何间隔的性质,那么这个分类标准的公式也不难理解了~
    简单推导一下,我们假设超平面是((w')^Tx_i+b'=0),那么对于((x_i,y_i)in D),有

    [left{ egin{array}{c} (w')^Tx_i+b'>0, &y_i=+1;\ (w')^Tx_i+b'<0, &y_i=-1. end{array} ight. ]

    根据几何间隔,将以上关系修正为:

    [left{ egin{array}{c} (w')^Tx_i+b'geqzeta, &y_i=+1;\ (w')^Tx_i+b'leqzeta, &y_i=-1. end{array} ight. ]

    其中zeta为某个大于零的常数,两边同时除以zeta,再次修正以上关系为:

    [left{ egin{array}{c} (frac{w'}{zeta})^Tx_i+frac{b'}{zeta}geq+1, &y_i=+1;\ (frac{w'}{zeta})^Tx_i+frac{b'}{zeta}leq-1, &y_i=-1. end{array} ight. ]

    (w=frac{w'}{zeta}),(b=frac{b'}{zeta}),就可以得到我们上面的公式了~~~

    最大间隔分类器->支持向量机的基本型

    当对样本进行分类时,如果样本离分类超平面的间隔越远,那么分类的置信度就越大,因而分类超平面就是要最大化这个间隔值,这个间隔是指几何间隔(gamma)(gamma)与函数间隔(hatgamma)满足关系式(gamma=frac{hatgamma}{||w||})(函数间隔标准化就是几何间隔),那么我们就可以得到最大间隔分类器的目标函数是

    [egin{aligned} &max_{w,b} quad frac{hatgamma}{||w||} \ &s.t. y^{(i)}(w^Tx^{(i)}+b)geq hat{gamma},i=1,ldots,m end{aligned} ]

    由于按比例缩放((w,b)),是不会改变几何间隔的,因而引入限制条件以((w,b))为参数的函数间隔(hat{gamma})必须为1,于是目标函数最大化(frac{hat{gamma}}{||w||})可以变为最大化(frac{1}{||w||}),也就是相当于最小化(||w||^2),因而我们得到最终的目标函数

    [egin{aligned} &max_{w,b} quad frac{1}{2}||w||^2 \ &s.t. y^{(i)}(w^Tx^{(i)}+b)geq 1,i=1,ldots,m end{aligned} ]

    这就是支持向量机的基本型。
    我觉得利用函数间隔和几何间隔来解释推导、得到最终的目标函数比按照西瓜书上这一块的推导更详细清晰一点哎(๑→‿ฺ←๑)

    拉格朗日对偶

    广义拉格朗日函数:

    [L(omega,alpha,eta)=f(omega)+sum_{i=1}^kalpha_ig_i(omega)+sum_{i=1}^leta_ih_i(omega) ]

    先来明确一下凸优化问题:目标函数(f(omega))是凸函数,不等式约束(g(omega))是凸函数,(h(omega))是线性函数。
    再来说一说对偶问题,对偶问题一定是凸优化问题
    这里不再推导对偶定理的正确性了,我们只要学会怎样把主问题化为对偶问题求解就好了~
    只要是满足KKT条件的强对偶,就可以对主问题通过拉格朗日乘子法得到拉格朗日函数进行求解。
    KKT条件:

    [egin{aligned} abla_{omega_i}L(omega,alpha,eta)=0,\ abla_{eta_i}L(omega,alpha,eta)=0,\ alpha_ig_i(omega)=0,\ g_i(omega)leq0,\ alpha_igeq 0. end{aligned} ]

    其中,第三个式子,我们将其称之为KKT对偶互补条件,通过这个条件我们可以知道支持向量机中只有一小部分是“支持向量”。

    支持向量

    间隔是1,即(alpha)>0的样本((x_i,y_i))为支持向量。

    最优间隔分类

    知道了对偶问题,我们就可以得到一开始求得的最大间隔分类器的目标函数的对偶问题,即对每条约束添加拉格朗日乘子(alpha_i geq0)

    [L(omega,alpha,b)=frac{1}{2}||w||^2-sum_{i=1}^malpha_i(y_i(omega^Tx_i+b)-1) ]

    (L=(omega,alpha,b))(omega)和b求偏导:
    具体求导如下:
    要使用到的公式(frac{dx}{dx^T}=1),因此我们可以得到(frac{d(x^Tx)}{dx}=2x)
    将L展开,得到:

    [egin{aligned} L(omega,alpha,b)&=frac{1}{2}||w||^2-sum_{i=1}^m(alpha_iy_iw^Tx_i-sum_{i=1}^malpha_iy_ib+sum_{i=1}^malpha_i) \ &=frac{1}{2}omega^Tomega-sum_{i=1}^malpha_iy_iw^Tx_i-sum_{i=1}^malpha_iy_ib+sum_{i=1}^malpha_i end{aligned} ]

    (omega)、b求导:

    [egin{aligned} abla_{omega}L(omega,alpha,b)&=omega-sum_{i=1}^malpha_iy_ix_i,\ abla_b L(omega,alpha,b)&=-sum_{i=1}^malpha_iy_i. end{aligned} ]

    令偏导为0,因而得到:

    [egin{aligned} omega&=sum_{i=1}^malpha_iy_ix_i, \ 0&=sum_{i=1}^malpha_iy_i. end{aligned} ]

    再带回L中,则有

    [egin{aligned} &max_{alpha}sum_{i=1}^malpha_i-frac{1}{2}sum_{i=1}^msum_{j=1}^malpha_ialpha_jy_iy_jx_i^Tx_j^T \ &s.t. alpha_i geq0,i=1,2,ldots,m,\ &sum_{i=1}^malpha_iy_i=0. end{aligned} ]

    得到模型:

    [egin{aligned} f(x)&=omega_Tx+b\ &=sum_{i=1}^malpha_iy_ix_i^Tx+b \ &=sum_{i=1}^malpha_iy_ilangle x_i,x angle+b end{aligned} ]

    只要求解出(alpha),只需按照上式求出x与训练集中样本的内积即可,而我们知道除了少部分的支持向量外,其余训练样本对应的(alpha_i)都是零,所以只需求出x与支持向量的内积,再按照上式,就可做出预测。
    接下来,就介绍一下如何预测(alpha_i).

    SMO(序列最小化算法)

    软间隔与正则化

    对于线性不可分的样本,我们可以用升维的方法转化为线性可分的问题,但这样很明显会增加计算的复杂度,因而我们引入软间隔
    采用hinge损失,优化目标可写为:

    [min frac{1}{2}||omega||^2+Csum_{i=1}^m max(0,1-y_i(omega^Tx_i+b)) ]

    引入松弛变量(xi_i geq0),则上式可写为:

    [egin{aligned} &min frac{1}{2}||omega||^2+Csum_{i=1}^mxi_i \ &s.t.quad y_i{omega^T(x_i+b)}geq1-xi_i,\ &xi_igeq0,i=1,2,ldots,m. end{aligned} ]

    那么这就是软间隔支持向量机.
    将上式展开:

    [L=frac{1}{2}omega^Tomega+Csum_{i=1}^mxi_i+sum_{i=1}^malpha_i-sum_{i=1}^malpha_ixi_i-sum_{i=1}^malpha_iy_i(omega^Tx_i+b)-sum_{i=1}^mmu_ixi_i ]

    (L(omega,b,alpha,x_i,mu))(omega,b,x_i)求偏导,

    [egin{aligned} abla_omega &=omega-sum_{i=1}^malpha_iy_ix_i,\ abla_b &=-sum_{i=1}^malpha_iy_i,\ abla_{xi_i} &=sum_{i=1}^m C-sum_{i=1}^malpha_i-sum_{i=1}^mmu_i . end{aligned} ]

    令偏导为零,可得:

    [egin{aligned} omega&=sum_{i=1}^malpha_iy_ix_i,\ 0&=sum_{i=1}^malpha_iy_i,\ C&=alpha_i+mu_i . end{aligned} ]

    将此式与硬间隔下的对偶问题比较,两者唯一的差别就在于约束条件的不同,硬间隔的约束条件是(alpha_igeq0),而软间隔是(0leqalpha_ileq C)
    这里的C作为正则化参数,作用类似于(frac{1}{lambda}),那么

    • C较大时,相当于(lambda)较小,可能会导致过拟合,高方差。这就可能变成了硬间隔。
    • C较小时,相当于(lambda)较大,可能会导致低拟合,高偏差。
      暂时就先说这么多吧~~大晚上,这些公式编辑到眼睛要瞎了wwww
  • 相关阅读:
    在sed中怎么样产生控制字符^M
    递归遍历目录的shell脚本
    递归法遍历目录查找文件
    【30.01%】【hdu 3397】Sequence operation
    【23.68%】【hdu 2871】Memory Control
    【33.18%】【hdu 5877】Weak Pair (3种解法)
    【38.96%】【hdu 1540】Tunnel Warfare
    【26.8%】【CF 46D】Parking Lot
    【35.20%】【CF 706D】Vasiliy's Multiset
    【33.20%】【LA 4320】【Ping pong】
  • 原文地址:https://www.cnblogs.com/CuteyThyme/p/11837261.html
Copyright © 2011-2022 走看看