zoukankan      html  css  js  c++  java
  • 5. support vector machine

    1. 了解SVM

    1. Logistic regression回顾

    Logistic regression目的是从特征中学习出一个0/1二分类模型,而这个模型是将特性的线性组合作为自变量,由于自变量的取值范围是负无穷到正无穷。因此,使用logistic function(或称作sigmoid function)将自变量映射到(0,1)上,映射后的值被认为是属于y=1的概率。

    假设函数

     其中$x$是$n$维特征向量,函数$g$就是logistic function。
        而的图像是
     

        可以看到,将输出从无穷映射到了(0,1)。

        而假设函数就是特征属于y=1的概率。

     

     
     
     

     

     

     

     

     

    从而,当我们要判别一个新来的特征属于哪个类时,只需求 $h_θ(x)$ 即可,若$h_θ(x)$大于0.5就是y=1的类,反之属于y=0类。

    此外,$h_θ(x)$ 只和$θ^Tx$有关,$θ^Tx > 0$,那么$h_θ(x) > 0.5$,而$g(z)$只是用来映射,真实的类别决定权还是在于$θ^Tx$。

    再者,当$θ^Tx gg 0$时,$h_θ(x)=1$,反之$h_θ(x)=0$。如果我们只从$θ^Tx$出发,希望模型达到的目标就是让训练数据中y=1的特征$θ^Tx gg 0$,而是y=0的特征$θ^Tx ll 0$。Logistic回归就是要学习得到$θ$,使得正例的特征远大于0,负例的特征远小于0,而且要在全部训练实例上达到这个目标。

    接下来,尝试把logistic regression做个变形。首先,将使用的结果标签$y = 0$和$y = 1$替换为$y = -1,y = 1$,然后将 $θ^Tx=θ_0+θ_1x_1+...+θ_nx_n,(x_0=1)$ 中的 $θ_0$替换为$b$,最后将后面的$θ_1x_1+θ_2x_2+...+θ_nx_n$替换$W^Tx$。如此,则有了$θ^Tx=W^Tx+b$

    也就是说除了y由y=0变为y=-1外,线性分类函数跟logistic regression 的形式化表示$h_θ(x)=g(θ^Tx)=g(W^Tx+b)$没区别。

    2. 间隔与支持向量

    给定训练样本集$D={(x_1,y_1), (x_2, y_2),...,(x_m, y_m)}$, $y_iin{-1, +1}$, 分类学习最基本的想法就是基于训练集$D$在样本空间中找到一个划分超平面,将不同类别的样本分开,但能将训练样本分开的划分超平面可能有很多,如下图:

    直观上来看,应该去找位于两类训练样本“正中间”的划分超平面,即上图中最粗的那条,因为该划分超平面对训练样本局部扰动的“容忍”性最好。例如,由于训练集的局限性或噪声的因素,训练集外的样本可能比上图中训练样本更接近两个类的分个界,这将使许多划分超平面出现错误,而中间最粗的超平面受影响最小。换言之,这个划分超平面所产生的分类结果是最鲁棒的,对未见示例的范化能力最强。

    在样本空间中,划分超平面可通过如下线性方程来描述:

    $W^Tx+b = 0$

    其中$W=(w_1;w_2;...;w_K)$为超平面法向量,决定了超平面的方向;$b$为位移项,决定了超平面与原点之间的距离。在超平面确定的情况下,$lvert{W^Tx+b} vert$能够表示点$x$距离超平面的远近,而通过观察 $W^Tx+b$的符号与类标记$y$的符号是否一致可判断分类是否正确。于是引出了“函数间隔”的概念:

    $hat{gamma} = lvert{W^Tx+b} vert = y*(W^Tx+b)$

    但这样定义间隔有问题,即如果我们成比例改变$(W,b)$,函数间隔值也会改变,所以加上约束条件引入真正的间隔--“几何间隔

    给定一个超平面 $W^Tx+b=0$, 样本空间中任意点$x$到超平面$(W,b)$的距离(几何间隔)为:

    $gamma=frac{hat{gamma}}{lVert{W} Vert}=frac{lvert{W^Tx+b} vert}{lVert{W} Vert}=frac{y*(W^Tx+b)}{lVert{W} Vert}$

    而超平面(w,b)关于D中所有样本点(xi,yi)的函数间隔最小值(其中,x是特征,y是结果标签,i表示第i个样本),便为超平面(w, b)关于训练数据集D的几何间隔:

    $gamma= min gamma_i$

    假设超平面$(W,b)$能将训练样本正确分类,即对于$(x_i, y_i)in{D}$, 若 $y_i= +1$ 则有 $W^Tx_i+b>0$;若 $y_i= -1$ 则有 $W^Tx_i+b<0$. 我们令:

    $W^Tx_i+b ge +1, y_i = +1;$
    $W^Tx_i+b le -1, y_i = -1.$

    这里也就是令这个超平面关于训练集的函数间隔为1

    如下图所示,距离超平面最近的这几个训练样本使得上式的等号成立,他们被称为“支持向量”,两个异类支持向量到超平面的距离之和为

    $gamma = frac{2}{lVert{W} Vert}$

    它被称为“间隔”。

    而对于一个数据集进行分类,当超平面离数据集的“间隔”越大,分类确信度也越大。所有,为例获得分类的确信度尽量高,需要让所选择的超平面能够最大化这个“间隔”值,即

    $max limits_{W,b}frac{2}{lVert{W} Vert}$

    s.t. $y_i(W^Tx_i+b) ge 1, i=1,2,...m.$

    显然,为了最大化间隔,仅需最大化 ${lVert{W} Vert}^{-1}$. 这等价于最小化 ${lVert{W} Vert}^{2}$, 于是,上式可重写为: 

     

    $min limits_{W,b}frac{1}{2}{lVert{W} Vert}^{2}$

    s.t. $y_i(W^Tx_i+b) ge 1, i=1,2,...m.$

    1

    这里的意思就是找到合适的$W$和$b$,使得每个样本都能正确分类且每个样本到这个超平面的“函数间隔”都大于1的前提下,能最小化${lVert{W} Vert}^{2}$。到这里为止,这就是支持向量机(Support Vector Machine)的基本型。

    2. 对偶问题

    我们希望求解 1 式来得到最大间隔划分超平面所对应的模型:

      $f(x) = W^Tx + b$ 2

    对 1 式使用拉格朗日乘子法可得到其“对偶问题”,具体来说,对 1 式的每个约束添加拉格朗日乘子 $alpha_i ge 0$,则该问题的拉格朗日函数可写成:

      $L(W,b,alpha) = frac{1}{2}{lVert{W} Vert}^{2} + sum_{i=1}^{m}alpha_i(1-y_i(W^Tx_i + b))$ 3

    其中$alpha=(alpha_1;alpha_2;...;alpha_m)$。令$L(W,b,alpha)$对$W$和$b$的偏导为零可得:

      $W$=sum_{i=1}^{m}alpha_iy_ix_i  ,$ 4
      $0=sum_{i=1}^{m}alpha_iy_i .$ 5

     带入公式 2 ,得到公式 1 的对偶问题:

     

    $max limits_{alpha}sum_{i=1}^{m}alpha_i - frac{1}{2}sum_{i=1}^{m}sum_{j=1}^{m}alpha_ialpha_jy_iy_jx_i^Tx_j$

    s.t. $sum_{i=1}^{m}alpha_iy_i =0, alpha_i ge 0, i=1,2,...m.$

    6

    解出$alpha$后,求出$W$和$b$即可得到模型:

    $f(x)=W^Tx+b$

        $=sum_{i=1}^{m}alpha_iy_ix_i^Tx+b$

    7

    如何确定偏移项$b$呢,注意到对任意支持向量$(x_s,y_s)都有$y_sf(x_s)=1$,即:

      $y_s(sum_{iin S}alpha_iy_ix_i^Tx+b)=1$ 8

    其中$S={i|alpha > 0, i=1,2,...,m}$为所以支持向量的下标集。实际中使用所有支持向量求解的平均值求$b$:

      $b = frac{1}{lvert{S} vert}sum_{sin S}(y_s-sum_{iin S}alpha_iy_ix_i^Tx)$ 9

     

     

    2. 核函数

    前面的讨论中,我们假设训练样本是线性可分的,即存在一个划分超平面能将训练样本正确分类。 然而在实际任务中,原始样本空间也许并不存在一个能正确划分两类样本的超平面。

    对这样的问题,我们可以将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内变得线性可分。幸运的是,如果原始空间是有限维,即特征数有限,那么一定存在一个高维特征空间使得样本可分。

    令$Φ(x)$表示将$x$映射后的特征向量,于是,在特征空间中划分超平面所对应的模型可表示为:

      $f(x) = W^Tphi(x)+b$ 10

     

    设想存在这样一个函数:

      $k(x_i,x_j) = <phi(x_i),phi(x_j)> = phi(x_i)^Tphi(x_j)$ 11

    求解后得到:

     

    $f(x) = W^Tphi(x)+b$
    $=sum_{i=1}^{m}alpha_iy_iphi(x_i)^Tphi(x)+b$
    $=sum_{i=1}^{m}alpha_iy_ik(x,x_i)+b$

    12

    这里的$k(ullet,ullet)$就是“核函数”。

    常见的核函数有:

     高斯核又称为RBF径向基核。

     

    参考:

    周志华 机器学习

    http://blog.csdn.net/v_july_v/article/details/7624837

  • 相关阅读:
    Go语言基础(四)
    Go语言基础(一)
    Go语言简介和开发环境搭建
    数据分析(四)数据可视化之Matplotlib
    数据分析(三)Pandas
    git简介与基本操作
    drf框架之三大认证之频率类源码分析
    数据分析(二)numpy
    换零钱问题的非递归解法 SICP 1.2.2中的一个问题
    # Java中的代理类
  • 原文地址:https://www.cnblogs.com/xuanyuyt/p/6056304.html
Copyright © 2011-2022 走看看