• SVM 之线性可分支持向量机


    支持向量机是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。

    模型包括以下几类:

    1. 基本概念

       线性可分支持向量机前提:训练集样本线性可分。设训练集样本 $T$:

    $$T = left {(x_{1},y_{1}),(x_{2},y_{2}),...,(x_{n},y_{n}) ight }$$

       任意一个超平面 $(w,b)$ 关于样本点 $(x_{i},y_{i})$ 的几何间隔为:

    $$gamma_{i} = frac{|w^{T}x_{i} + b|}{||w||} = frac{y_{i}(w^{T}x_{i} + b)}{||w||}$$

       这里的几何间隔不是指点到超平面的距离,而是实例点到超平面带符号的距离,可以为负数,此时样本点被错误分类;当样本点被正确分类时,

       几何间隔才等于点到超平面的距离。

       任意一个超平面关于训练集 $T$ 的几何间隔定义为:所有样本点到超平面几何间隔的最小值,即

    $$gamma = min_{i}gamma_{i} = min_{i} frac{y_{i}(w^{T}x_{i} + b)}{||w||}$$

       那么这个到超平面距离最小的样本点就称为这条直线的支持向量。举个例子,观察下图

            

       对于同一个超平面 $(w,b)$,【错误分类点的几何间隔 $< 0 <$ 正确分类点的几何间隔】

          1)绿色直线的支持向量为点 $D$,几何间隔为 $gamma_{i} igg |_{D}$,是一个负数。

          2)蓝色直线的支持向量为点 $A$,几何间隔为 $gamma_{i} igg |_{A}$,也是一个负数。

          3)橙色直线的支持向量为点 $A ; or ; D$,几何间隔为 $gamma_{i} igg |_{A}$,是一个正数,等于距离。

       并不是每一个样本点都可以成为支持向量,比如图中的 $H$ 点,就没办法找到一条直线,使它到该直线的几何间隔比其它样本点的都小。

       支持向量的个数取决于样本,一般是有限的几个,且位于边界。

       每个支持向量都会对应一簇超平面,这簇超平面到该支持向量的几何间隔比其它样本点都小。

    2. 什么样的超平面才是最优超平面?

       考虑如下左图 $1$,过点 $I$ 和点 $F$ 做两条平行线,且平行线之间没有其它的样本点,那么位于这两条平行线之间的直线必然是要么以 $I$ 点为

       支持向量,要么以 $F$ 点为支持向量。现在我们将这两条直线同步地逆时针旋转,旋转过程中必须保持两条平行线之间没有其它样本点,旋转到

       一定程度,如下图 $2$。此时达到临界点,如果在两条平行线之间选择一条分割线,显然黑线会是最好的。

       如果在 $C$ 和 $F$ 两点做平行线,如下图 $3$,很明显图 $3$ 中的平行线之间的间隔更大,那么能否认为 $3$ 中的黑色直线比 $2$ 中的更优?

                      

       上图中的虚线称为支撑超平面,很明显正类和负类都各有一个支撑超平面,它们一一对应,即满足:

           1)每一个支撑超平面都经过支持向量,且相互平行。

           2)两个支撑超平面之间没有其它样本点,是一个“真空”区域。

       硬间隔:两个对应的支撑超平面之间的距离。

       线性可分支持向量机模型选择的依据是:硬间隔最大化也就是说当两个支撑超平面之间的距离最大的时候,位于它们中间的那个超平面就是最优超平面。

       按这种思路,图 $3$ 中的黑线是优于图 $2$ 的。

    3. 建立约束最优化问题

       仍然以 $2$ 中的图为例。先只考虑假设空间中的超平面,即会使样本点都被正确分类的超平面,这些超平面只会位于下图所示位置:

         

       图中 $A,C,I,F,H$ 都可能成为分离超平面的支持向量,我们目标是:求出一组参数 $w,b$ 使得对应的硬间隔最大。

       现在需要确定一个指标来作为评判标准。

       观察一下 $2$ 中的图 $2$,黑色直线到点 $I$ 或点 $F$ 的距离是最大的,此时它的支持向量有两个,即点 $I,F$,这是一个临界直线,往左,

       则支持向量仅为 $I$;往右,则支持向量仅为 $F$。

       而我们要求的那个黑色直线满足:所有以点 $I$ 或点 $F$ 为支持向量的直线簇中,与支持向量的几何间隔最大的那条

       另外,做为支持向量的点只需要考虑正类或者负类,因为一方会决定另一方。求解步骤如下:

       1)设点 $H$ 坐标 $(x_{H},y_{H})$,则该点到超平面 $(w,b)$ 的几何间隔为

    $$gamma_{H} = frac{y_{H}left ( w^{T}x_{H} + b ight )}{||w||}$$

          则几何间隔最大的那个超平面为

    $$(w,b) = arg max_{w,b} ; gamma_{H}$$

          求解过程中必须保证支持向量仍然为 $F$,即其它样本点到超平面的距离都必须 $geq gamma_{H}$,于是有 $n$ 个约束:

    $$frac{y_{i}left ( w^{T}x_{i} + b ight )}{||w||} geq gamma_{H}, ; i = 1,2,cdots,n$$

       2)设点 $F$ 坐标 $(x_{F},y_{F})$,与 1)中过程相同,可得到:

    $$gamma_{F} = frac{y_{F}left ( w^{T}x_{F} + b ight )}{||w||} \
    (w,b) = arg max_{w,b} ; gamma_{F} \
    s.t. ;;; frac{y_{i}left ( w^{T}x_{i} + b ight )}{||w||} geq gamma_{F}, ; i = 1,2,cdots,n$$

       上面两步之后会得到 $2$ 条分割线,取几何间隔最大的那条作为最终的分离超平面。

       但是,上面的求解过程是站在了上帝视角,给了一堆样本点,我们根本就不会知道哪些点能作为支持向量,即 $H,F$ 点都是未知的。

       我们来观察一下 $gamma_{H}$,思考一个问题:分子的取值会不会影响最优化问题的解?

       分析:对于超平面 $w^{T}x + b = 0$,可以按比例改变系数 $w,b$,改变后仍然代表同一个超平面,设点 $x_{0}$,那么它到这个超平面的距离为 $d = frac{|w^{T}x + b|}{|w|}$,

             现在调整 $w,b$ 为 $lambda w,lambda b$,距离 $d$ 恒定不变,但分子和分母都各自改变了,也就是说,可以通过调整比例 $lambda$ 使分子出现任何数值,那么总会存在

             一个比例 $lambda_{0}$ 使得

    $$|;(lambda_{0} w)^{T}x + lambda_{0}b;| = 1 \
    w ightarrow w^{'} = lambda_{0}w \
    b ightarrow b^{'} = lambda_{0}b$$

             此时距离公式变成 $d = frac{1}{|w^{'}|}$。

             现在来考虑 $gamma_{H}$,最优化问题是求它的最大值,设最优解为 $(w^{*},b^{*})$,备选的直线是:所有以点 $H$ 为支持向量的直线簇(约束),那么这些

             直线也可以各自调整它们的系数 $w,b$,调整后仍然会代表相同的直线。也就是说,每一条直线都会存在一个系数 $lambda$,使得调整后的参数 $w^{'},b^{'}$ 满足

    $$y_{H}left ( (w^{'})^{T}x_{H} + b^{'} ight ) = 1 \
    w^{'} = lambda w \
    b^{'} = lambda b$$

             那么此时求得的最优解就变成了 $left ( lambda w^{*}, lambda b^{*} ight )$,代表的仍然是同一个超平面。

       此时惊讶的发现根本就没必要知道支持向量的具体数值,上面的步骤 1) 2)就可以写到一起,如下:

    $$max ; frac{1}{||w||} \
    s.t. ;;; y_{i}left ( w^{T}x_{i} + b ight ) geq 1, ; i = 1,2,cdots,n$$

       上面就等价于求分母的最小值,于是得到最终所要求解的最优化问题

    $$min ; frac{1}{2}||w||^{2} \
    s.t. ;;; y_{i}left ( w^{T}x_{i} + b ight ) - 1 geq 0, ; i = 1,2,cdots,n$$

       为什么这么转化呢?可能与凸优化相关,暂时不论。

    4. 最优超平面唯一性证明

       只需要证明:以某个样本点作为支持向量的最优超平面唯一。

       比如 $2$ 中的图,以点 $H$ 为支持向量的直线簇中,只能找到一条直线,它到点 $H$ 的几何间隔最大。

       证明:

           采用反证法。即假设存在两个几何间隔最大的超平面 $(w_{1}^{*}, b_{1}^{*}),(w_{2}^{*}, b_{2}^{*})$,因为都是最优解,所以:

    $$||w_{1}^{*}|| = ||w_{2}^{*}|| = c$$

           将这两个解代入约束条件有:

    $$y_{i}(w_{1}^{*}x_{i} + b_{1}^{*}) - 1 geq 0\
    y_{i}(w_{2}^{*}x_{i} + b_{2}^{*}) - 1 geq 0$$

           上面两式相加得:

    $$y_{i}left ( frac{w_{1}^{*} + w_{2}^{*}}{2} cdot x_{i} + frac{b_{1}^{*} + b_{2}^{*}}{2} ight ) - 1 geq 0$$

           令 $w = frac{w_{1}^{*} + w_{2}^{*}}{2}, ; b = frac{b_{1}^{*} + b_{2}^{*}}{2}$,所以 $(w,b)$ 是问题的可行解(满足约束条件的解),根据向量三角不等式有

    $$c leq ||w|| = ||frac{1}{2}w_{1}^{*} + frac{1}{2}w_{2}^{*}|| leq frac{1}{2}||w_{1}^{*}|| + frac{1}{2}||w_{2}^{*}|| = c$$

           所以有

    $$||w_{1}^{*} + w_{2}^{*}|| = ||w_{1}^{*}|| + ||w_{2}^{*}||  \
    Rightarrow ; w_{1}^{*} = w_{2}^{*}$$

           现在,最优解 $(w_{1}^{*}, b_{1}^{*}),(w_{2}^{*}, b_{2}^{*})$ 可以记为 $(w^{*}, b_{1}^{*}),(w^{*}, b_{2}^{*})$,下面证明它们的截距也相同。

           对于超平面 $(w^{*}, b_{1}^{*})$,在正类和负类中分别选择一个它的支持向量 $x_{1}^{'},x_{1}^{''}$,则这两个向量会使约束条件取等号,即

    $$w^{*}x_{1}^{'} + b_{1}^{*} - 1 = 0  \
    -w^{*}x_{1}^{''} - b_{1}^{*} - 1 = 0$$

           对于超平面 $(w^{*}, b_{2}^{*})$,在正类和负类中分别选择一个它的支持向量 $x_{2}^{'},x_{2}^{''}$,则这两个向量会使约束条件取等号,即

    $$w^{*}x_{2}^{'} + b_{1}^{*} - 1 = 0  \
    -w^{*}x_{2}^{''} - b_{1}^{*} - 1 = 0$$

           分别得到

    $$b_{1}^{*} = -frac{1}{2}(w^{*}x_{1}^{'} + w^{*}x_{1}^{''})  \
    b_{2}^{*} = -frac{1}{2}(w^{*}x_{2}^{'} + w^{*}x_{2}^{''})  \
    Rightarrow ; b_{1}^{*} - b_{2}^{*} = -frac{1}{2}left [ w^{*} cdot (x_{1}^{'} - x_{2}^{'}) + w^{*} cdot (x_{1}^{''} - x_{2}^{''}) ight ]$$

           又因为

    $$w^{*}x_{2}^{'} + b_{1}^{*} geq 1 = w^{*}x_{1}^{'} + b_{1}^{*} \
    w^{*}x_{1}^{'} + b_{2}^{*} geq 1 = w^{*}x_{2}^{'} + b_{2}^{*} \
    Rightarrow ; w^{*}(x_{1}^{'} - x_{2}^{'}) = 0$$

           同理:$w^{*}(x_{1}^{''} - x_{2}^{''}) = 0$,所以 $b_{1}^{*} = b_{2}^{*}$。

       证毕

    5. 最优化问题求解

       如果不懂什么是拉格朗日乘子拉格朗日对偶,可先阅读这两篇博客。

       现在要求解的原始问题为:

    $$min ; frac{1}{2}||w||^{2} \
    s.t. ;;; 1 - y_{i}left ( w^{T}x_{i} + b ight )  leq 0, ; i = 1,2,cdots,n$$

       定义拉格朗日函数:

    $$L(w,b,alpha) = frac{1}{2}||w||^{2} + sum_{i=1}^{n}alpha_{i}left [ 1 - y_{i}left ( w^{T}x_{i} + b ight ) ight ]\
    = frac{1}{2}||w||^{2} + sum_{i=1}^{n}alpha_{i}left [ 1 - y_{i}left ( w^{T}x_{i} + b ight ) ight ]  \
    = frac{1}{2}||w||^{2} - sum_{i=1}^{n}alpha_{i}y_{i}left ( w^{T}x_{i} + b ight ) + sum_{i=1}^{n}alpha_{i}, ;; alpha_{i} geq 0, ; i = 1,2,...,n$$

       可以写出求解这个不等式约束问题的 KKT 条件:

    $$left{egin{matrix}
    L_{w} = w - sum_{i=1}^{n}alpha_{i}y_{i}x_{i} = 0 \
    L_{b} = -sum_{i=1}^{n}alpha_{i}y_{i} = 0 \
    y_{i}left ( w^{T}x_{i} + b ight ) - 1 geq 0, ; i = 1,2,cdots,n \
    alpha_{i} left [ y_{i}left ( w^{T}x_{i} + b ight ) - 1 ight ] = 0, ; i = 1,2,cdots,n \
    alpha_{i} geq 0
    end{matrix} ight. ; Rightarrow ;
    left{egin{matrix}
    w = sum_{i=1}^{n}alpha_{i}y_{i}x_{i} \
    sum_{i=1}^{n}alpha_{i}y_{i} = 0 \
    b = y_{j} - w^{T}x_{j} = y_{j} - sum_{i=1}^{n}alpha_{i}y_{i}x_{i}^{T}x_{j}, ;(alpha_{j} > 0)
    end{matrix} ight.$$

       如果 $alpha$ 的任何一个分量都为 $0$,则可推出法向量 $w$ 为 $0$,矛盾,所以必有一个分量 $alpha_{j} > 0$,通过这个正分量来计算 $b$。

       很明显:只要知道了 $alpha_{i},; i = 1,2,...,n$ 就能够求出 $w,b$

       $ullet$ 下面采用拉格朗日对偶来求。

         原始问题为

    $$min_{w,b} igg [ max_{alpha_{i} ;:;alpha_{i} geq 0} L(w,b,alpha) igg]$$

         它对应的对偶问题为

    $$max_{alpha_{i} ;:;alpha_{i} geq 0} igg [ min_{w,b} L(w,b,alpha) igg]$$

         1)求 $min_{w,b} L(w,b,alpha)$

    $$left{egin{matrix}
    L_{w} = w - sum_{i=1}^{n}alpha_{i}y_{i}x_{i} = 0\
    L_{b} = -sum_{i=1}^{n}alpha_{i}y_{i} = 0
    end{matrix} ight. ;Rightarrow ;
    left{egin{matrix}
    w = sum_{i=1}^{n}alpha_{i}y_{i}x_{i}\
    sum_{i=1}^{n}alpha_{i}y_{i} = 0
    end{matrix} ight.$$

            将求解结果代入拉格朗日函数得

    $$L(w,b,alpha) = frac{1}{2}sum_{i=1}^{n}sum_{j=1}^{n}alpha_{i}alpha_{j}y_{i}y_{j}(x_{i} cdot x_{j}) - sum_{i=1}^{n}alpha_{i}y_{i} left [ left (sum_{j=1}^{n}alpha_{j}y_{j}x_{j}^{T}  ight )x_{i} + b ight ] + sum_{i=1}^{n}alpha_{i} \
    = -frac{1}{2}sum_{i=1}^{n}sum_{j=1}^{n}alpha_{i}alpha_{j}y_{i}y_{j}(x_{i}^{T}x_{j}) + sum_{i=1}^{n}alpha_{i}$$

         2)求 $min_{w,b} L(w,b,alpha)$ 对 $alpha$ 的极大

            对偶的目的就是为了消去 $w,b$,将 1)中得到的结果添个负号改为极小化问题,如下:

    $$min_{alpha } ; frac{1}{2}sum_{i=1}^{n}sum_{j=1}^{n}alpha_{i}alpha_{j}y_{i}y_{j}(x_{i}^{T}x_{j}) -sum_{i=1}^{n}alpha_{i} \
    s.t. ;;; sum_{i=1}^{n}alpha_{i}y_{i} = 0 \
    alpha_{i} geq 0, ; i = 1,2,cdots,n$$

           我们先看看这样化简有什么好处?

           第一个好处就是未知数的个数下降了, 把前面含有 $w$ 和 $b$ 的未知数消去了,现在的未知数只剩下 $alpha_{i}$ 和 $alpha_{j}$,其他未知数都为已知量。

           现在的问题是怎么求 $alpha$。采用的是 $SMO$ 算法,将在另一篇博客介绍。

  • 相关阅读:
    DinnerNow中的Work Flow应用(上) 订单流程
    在Silverlight 2 (Beta2) 中使用webclient上传图片
    初尝dinnernow
    在silverlight 2 (beta1) 中使用BackgroundWorker
    徒劳的尝试 动态修改LINQ TO SQL的表名称
    你是否积极主动(Proactivity)?
    动态加载Silverlight应用的dll文件(可实现插件功能)
    silverlight与javascript交互操作
    DinnerNow中的Work Flow应用(下) 订单流程
    C#中winform窗体常用设置
  • 原文地址:https://www.cnblogs.com/yanghh/p/13785589.html
Copyright © 2020-2023  润新知