SVM-支持向量机

SVM

标签(空格分隔): ML


  • SVM
    • 线性SVM
      • 1 为什么要大的间隔直觉
      • 2 间隔的计算
      • 3 解的形式转化
      • 4 二次规划求解
      • 5 为什么要大间隔降低模型复杂度
    • 对偶SVM
      • 1 非线性SVM
      • 2 对偶转换
      • 3 对偶形式的简化
      • 4 SVM隐藏的信息
    • 核型SVM
      • 1 高维问题
      • 2 kernel
      • 3 Polynomial Kernel
      • 4 Gaussian Kernel
      • 5 Comparison of Kernels
    • 软间隔SVM
      • 1 引入软间隔-容忍误差
      • 2 软间隔SVM的求解类似于硬间隔SVM
    • SMO算法
      • 0 SMO算法思路
      • 1 2个变量二次规划的求解方法
        • 11 问题形式转变
        • 12 变量的约束范围
        • 13 a_2的求解
      • 2 变量的选择方法
        • 21 第1个变量的选择
        • 22 第2个变量的选择
        • 23 更新b和E_i
      • 3 算法流程

本文主要来源于台湾大学林轩田在Coursera的课程《机器学习技术》

1. 线性SVM

1.1 为什么要大的间隔——直觉

间隔越大能容忍越大的误差,越健壮:
SVM-支持向量机_第1张图片

线性分类转变为:
SVM-支持向量机_第2张图片

1.2 间隔的计算

向量映射:
SVM-支持向量机_第3张图片

1.3 解的形式转化

(1)w和b的Scale对解没有影响,选择特定Scale的w和b,对解的形式进行化简:
SVM-支持向量机_第4张图片

(2)对目标函数进行转换:避免根号的计算;求最大值问题,变为求最小值问题:
SVM-支持向量机_第5张图片

1.4 二次规划求解

对于带约束的解,只能用二次规划求解:
SVM-支持向量机_第6张图片
代入二次求解公式:
SVM-支持向量机_第7张图片
解:
SVM-支持向量机_第8张图片

1.5 为什么要大间隔——降低模型复杂度

zn=ϕ(xn) , ϕ 为特征转换函数)SVM的大间隔相当于在保证分类准确率的情况下,尽可能的正则化:
SVM-支持向量机_第9张图片

Aρ :分类间隔必须大于等于 ρ . 通过限制分类间隔,可以降低模型的VC维,即模型的复杂度降低:
SVM-支持向量机_第10张图片

大间隔可以降低模型复杂度;特征转换可以使分类边界比较复杂:
SVM-支持向量机_第11张图片

2. 对偶SVM

Solving non-linear Support Vector Machine
SVM-支持向量机_第12张图片

2.1 非线性SVM

进行非线性转换后,维度从 d 变为 d̃  , d̃  可能变的很大甚至是无限大:
SVM-支持向量机_第13张图片

2.2 对偶转换

对偶的目的在于将 d̃  -(b,w)维参数优化问题,转化为 N -( λ ,拉格朗日参数)维参数优化问题:
SVM-支持向量机_第14张图片

等价的拉格朗日形式(去除限制条件):
SVM-支持向量机_第15张图片

对偶形式:
SVM-支持向量机_第16张图片

强对偶性(现在不理解。。。。)
SVM-支持向量机_第17张图片

2.3 对偶形式的简化

通过对 b 求导数,令导数为0,求最小值;利用导数为0得到的式子,去除变量 b
SVM-支持向量机_第18张图片

通过对 w 求导数,令导数为0,求最小值;得到 w 的表达式,去除变量 w :
SVM-支持向量机_第19张图片

KKT条件:原始问题和对偶问题的限制条件都满足,原始问题和对偶问题的内部变量的导数值均为0. 若一个变量满足KKT条件,则其为原始问题和对偶问题的最优解。
SVM-支持向量机_第20张图片

最终的对偶形式:
SVM-支持向量机_第21张图片

对于上述最终形式利用优化包,可求解到 α
SVM-支持向量机_第22张图片

求出 α 后,进一步求解 b w :
SVM-支持向量机_第23张图片

2.4 SVM隐藏的信息

非支持向量上的点, α 为0;只有在支持向量上的点对 w b 的值有影响;即支持向量机,被2条支持向量所决定:
SVM-支持向量机_第24张图片

SVM与PLA(感知机)间的联系:
SVM-支持向量机_第25张图片

3. 核型SVM

核型SVM解决高维空间计算问题。
SVM-支持向量机_第26张图片

3.1 高维问题

d̃  可能非常大:
SVM-支持向量机_第27张图片

3.2 kernel

Inner Product可用转换前 d 复杂度,完成 d̃  复杂度的计算:
SVM-支持向量机_第28张图片

Kernel = Transform + Inner Product:
SVM-支持向量机_第29张图片

Kernel SVM:所有的与高维 d̃  有关的计算都可以通过Kernel函数计算完成:
SVM-支持向量机_第30张图片

3.3 Polynomial Kernel

Poly-2 Kernel:
SVM-支持向量机_第31张图片

SVM-支持向量机_第32张图片

推广的多项式核:
SVM-支持向量机_第33张图片

线性核:
SVM-支持向量机_第34张图片

3.4 Gaussian Kernel

Gaussian Kernel可看作特征被转换到无限维:
SVM-支持向量机_第35张图片

一般性的Gaussian Kernel:
SVM-支持向量机_第36张图片

Gaussian Kernel SVM可以实现无限维的线性分隔,同时用最大间隔保持泛化能力:
SVM-支持向量机_第37张图片

Gaussian Kernel SVM的实际使用:
SVM-支持向量机_第38张图片

3.5. Comparison of Kernels

有效核的充分必要条件:对称和半正定
SVM-支持向量机_第39张图片

线性核:快速和易理解,但只能用于直线分隔
SVM-支持向量机_第40张图片

多项式核:可用于曲线分隔;但数值可能会很大,而且有3个参数,参数选取比较复杂
Snip20160321_45.png-151.1kB

高斯核:很强大,可用于各种分隔;相比多项式核,数值在一定范围内,而且只有一个参数,易于调节
SVM-支持向量机_第41张图片

4. 软间隔SVM

4.1 引入软间隔-容忍误差

允许有一些例子被错分:
SVM-支持向量机_第42张图片

上述的形式,不能求导,也不能区分大的误差和小的误差;因此引入软间隔SVM:
SVM-支持向量机_第43张图片

4.2 软间隔SVM的求解(类似于硬间隔SVM)

拉格朗日对偶方程:
SVM-支持向量机_第44张图片

εn 求导,令导数为0求极值,消去 ε β ;解的形式与硬间隔解的形似基本相同:
SVM-支持向量机_第45张图片

应用与硬间隔相同的求解方法,得到如下形式:
SVM-支持向量机_第46张图片

应用凸优化包进行求解:
SVM-支持向量机_第47张图片

b 的求解(注意 as>0 就是支持向量,不一定非得在边上的点才叫支持向量):
SVM-支持向量机_第48张图片

不同SV范围内的 an , εn 取值:
SVM-支持向量机_第49张图片

5. SMO算法

这部分内容,参考自李航的《统计学习方法》

5.0 SMO算法思路

要解决的问题:
SVM-支持向量机_第50张图片
思路:选择2个变量,固定其它变量,针对这2个变量构建一个二次规划问题
SVM-支持向量机_第51张图片

SVM-支持向量机_第52张图片

5.1 2个变量二次规划的求解方法

5.1.1 问题形式转变

SVM-支持向量机_第53张图片
SVM-支持向量机_第54张图片

5.1.2 变量的约束范围

SVM-支持向量机_第55张图片
SVM-支持向量机_第56张图片

  • y1y2 :
    k=a1a2=aold1aold2
    0a1=k+a2C 0a2C
    可得: L=max(0,aold2aold1) , H=min(C+aold2aold1,C)

同理可得:

  • y1=y2 : L=max(0,aold2+aold1C) , H=min(aold2+aold1,C)

5.1.3 a2 的求解

没有约束条件下的求解:
W(a2) 为关于 a2 的2次函数,且 a2 的系数 k11+k222k12=|ϕ(x1)ϕ(x2)|20 , 所以 W(a2) 在导数为0的点取得最小值,且越接近该点,值越小。(这里的思路好像有问题。。。。。。)
SVM-支持向量机_第57张图片
SVM-支持向量机_第58张图片

a2 加上约束条件:
SVM-支持向量机_第59张图片

5.2 变量的选择方法

选择的2个变量,至少有一个变量是违反KKT条件的

5.2.1 第1个变量的选择

SVM-支持向量机_第60张图片
Snip20160324_19.png-32.1kB

检验过程中怎样选择样本点,《统计学习方法》没有讲清楚;原文《Sequential Minimal Optimization - A Fast Algorithm for Training Support Vector Machines》是这样描述的:
Snip20160324_17.png-28.6kB

  • (1) 遍历整个训练集,找一个违反KKT条件的样本点
  • (2) 遍历间隔边界( 0<ai<C )上的样本点,找一个违反KKT条件的样本点
    (1)和(2)构成一个寻找的循环,但对于每个循环,(2)会进行多次,直到所有间隔边界上的点都满足KKT才停止。

5.2.2 第2个变量的选择

Snip20160324_20.png-33.7kB

  • (1) anew2 依赖于 |E1E2| , E1 已知,选择 a2 ,使其对应的 |E1E2| 最大
  • (2)如果以上方法选择的 a2 不能使目标函数的选择有足够的下降,那么遍历在间隔边界上的点,依次讲其对应的变量作为 a2 试用,直到目标函数有足够的下降。
  • (3)找不到合适的 a2 ,遍历整个训练数据集
  • (4)若仍找不到合适的 a2 ,则放弃第一个 a1 ,再通过外层循环找另外的 a1

5.2.3 更新 b Ei

SVM-支持向量机_第61张图片

SVM-支持向量机_第62张图片

5.3 算法流程

SVM-支持向量机_第63张图片
SVM-支持向量机_第64张图片

你可能感兴趣的:(机器学习,svm,kernel)