Skip to content

[机器学习]06 支持向量机

隐隐觉得这一章与解析几何和传统高数关系紧密,同时似乎在学最优化理论时也接触过类似的思路。

6.1 间隔与支持向量

这一小节是引子,用以引出支持向量机的核心思想。

6.1.1 引子

支持向量机表示

  • 如图是一个回归问题的样本分布,支持向量机的目标是要寻找一个超平面把两类样本分开,选哪个呢?直观上这个红色的最好,因为它离两类样本都足够远。
  • 如果是分类问题,那么这个超平面最好能在一定范围内包住所有点。

6.1.2 总计一下SVM的目标

  • 分类问题:寻找一个超平面,能够分开正例和负例,且让超平面最近的两类点距离最大
  • 回归问题:寻找一个超平面,能够包住全部样本点

但通常来说,支持向量机更多用于分类问题,接下来的讨论也都是关于分类问题的。

6.1.3 支持向量机的基本型

  • 设这个目标超平面的表达式为wTx+b=0,那么上述的目标用数学表示为:

    • 对于正类(yi=+1)的xi,应当满足wTxi+b1
    • 对于负类(yi=1)的xi,应当满足wTxi+b1
    • 恰好满足这两式等号的样本被称为“支持向量”
    • 而两个异类支持向量到超平面的距离之和γ=2||w||被称为“间隔”。
  • 其实我们早就注意到这是个优化问题,简单表述为:寻找参数wb,使得γ最大。

argmaxw,b2||w||s.t. yi(wTxi+b)1,i=1,2,,m
  • 但其实优化问题的基本型一般是min,所以转换一下,得到SVM的优化问题的基本型:
argminw,b12||w||2s.t. yi(wTxi+b)1,i=1,2,,m

6.2 对偶问题

解这个问题的方法是拉格朗日乘子法,引入拉格朗日乘子法后相当于解决原问题的对偶问题。

6.2.1 拉格朗日乘子法

(1) 公式推演

  1. 引入拉格朗日乘子αi0,得到拉格朗日函数

    • L(w,b,α)=12||w||2+i=1mαi[1yi(wTxi+b)]
  2. L(w,b,α)wb的偏导为0,得到:

    • w=i=1mαiyixi(令Lw=0得到)
    • 0=i=1mαiyi(令Lb=0得到)
  3. 回代到L中可得:

    • 首先化简一下L:
    L(w,b,α)=12wTw+i=1mαiwTi=1mαixiyi(i=1mαiyi)b
    • 然后将2.中的2个式子代入,得到:
    maxαi=1mαi12i=1mj=1mαiαjyiyjxiTxjs.t. i=1mαiyi=0,αi0

(2) KKT条件

KKT条件是优化问题的一种重要条件,用于在约束条件下寻找最优解。

{αi0,(拉格朗日乘子法的要求,αi必须0)yif(xi)1,(每个样本都要被正确地分类)αi[yif(xi)1]=0,(必有αi=0yif(xi)=1)
  • 优化目标是凸函数的话,KKT条件就是全局极小值点存在的充要条件
  • 不是充分条件的话,KKT条件只能保证局部极小值点,也就是驻点,只是极小值点的必要条件

(3) 解法

不会考的,所以随便看下即可

  • 转换为对偶问题(拉格朗日乘子法)
  • 代入约束条件
  • 利用KKT条件,计算向量w
  • 利用KKT条件,计算b

6.2.2 SMO(Sequential Minimal Optimization)算法

这又是个迭代算法,但并不要求掌握解法,知道就行

  • 对于推导出的对偶优化问题:
maxαi=1mαi12i=1mj=1mαiαjyiyjxiTxjs.t. i=1mαiyi=0,αi0
  • 如何高效求解呢?SMO算法是其中的代表。

(1) 基本思路

  • 不断执行以下两个步骤直至收敛:
    • 选取一对需要更新的变量αiαj
    • 固定αiαj以外的参数,求解对偶问题更新αiαj

(2) 变量选择原则

大概也不考,知道就行

  • 第1个变量是在KKT条件不满足的中间选择。
    • 直观来看,KKT条件违背的程度越大,则变量更新后可能会使得目标函数的增幅越大
  • 第2个变量应选择使得目标函数增长最快的变量,也就是两样本的间距最大。

6.3 核函数

若原问题线性不可分,根据一个什么公式,必然存在其高维映射线性可分,所以此时就将其从低维空间映射到高维空间。但映射完之后往往会导致维度灾难,所以就有了核函数。

6.3.1 为什么需要核函数

  • 设样本x映射后的向量为Φ(x),则超平面为f(x)=wTΦ(x)+b,此时的优化问题为:
  • 原始问题:
argminw,b12||w||2s.t. yi(wTΦ(xi)+b)1,i=1,2,,m
  • 对偶问题:
minα12i=1mj=1mαiαjyiyjΦ(xi)TΦ(xj)i=1mαi
  • 预测:
f(x)=wTΦ(x)+b=i=1mαiyiΦ(xi)TΦ(x)+b
  • 但是直接计算Φ(xi)TΦ(xj)很难(因为维度通常很高),所以我们才想到将其单独拉出来作为核函数k(xi,xj)=Φ(xi)TΦ(xj),并且不直接设计核映射Φ,而是设计整个核函数k

所以说白了核函数就是一个函数,它的输入是两个样本,输出是两个样本映射后的内积,这样就避免了直接计算映射后的内积,从而避免了维度灾难。

6.3.2 常用核函数

  • 明显核函数其实就是xi,xj做某种运算,其目的是为了升维映射,所以经过总结前人经验,目前存在多种常用核函数。

大概记个线性核和高斯核就差不多了

常用核函数

6.3.3 核函数的注意事项

  • 核函数的选择成为SVM的最大变数
  • 经验来讲,文本数据适合线性核,情况不明适合使用高斯核

6.4 软间隔与正则化

SVM的想法太理想,但现实中往往无法实现,因此需要做一下妥协:允许一些样本不满足约束条件,即允许一些样本被误分类。

6.4.1 软间隔

  • 引入软间隔之后,允许一些样本分类错误(即不满足约束),但仍应当要求不满足的样本尽量少。

  • 则优化目标改写为:

    minw,b12||w||2+Ci=1ml0/1(yi(wTΦ(xi)+b)1)
  • 其中l0/1是0/1损失函数,C>0是正则化常数,但是0/1损失函数不可导,因此我们使用松弛变量代替这部分:

    minw,b,ξi12||w||2+Ci=1mξis.t. yi(wTxi+b)1ξiξi0
  • 然后此时的拉格朗日乘子法表达式将变得史无前例地复杂:

    L(w,b,α,ξ,μ)=12||w||2+Ci=1mξi+i=1mαi(1ξiyi(wTxi+b))i=1mμiξi
  • 但好在这个式子不要求记住,你只要知道此时的KKT条件变体

6.4.2 软间隔下的KKT条件

{αi0,μi0(拉格朗日乘子法的要求,αi必须0)yif(xi)1+ξi0,(松弛的表现,在原本≥1的地方变成1ξi)αi[yif(xi)1+ξi]=0,(必有αi=0yif(xi)=1ξi)ξi0,μξi=0,(松弛条件)

6.4.3 正则化

正则化通过引入模型复杂度(结构风险和经验风险),来减小发生过拟合的几率

6.5 支持向量回归

6.6 核方法

本节不要求掌握

Extra06-总结

  • 本章的知识脉络如下图
graph LR

支持向量机-->间隔与支持向量 支持向量机-->优化问题求解思想-->KKT条件 支持向量机-->SMO 支持向量机-->核函数 支持向量机-->软间隔与正则化-->软间隔下的KKT条件

  • 支持向量机的思想:“找一个超平面,......”是个小重点
  • 支持向量机转化为优化问题后的KKT条件,以及加入软间隔之后的KKT条件是两个大重点

Ques06-例题整理

[思想理解·SVM是否对噪声敏感]

题目内容

  • SVM对噪声敏感吗?为什么?

分析与解答

  1. SVM对噪声敏感。
  2. SVM的目标是找到一个超平面,使得所有样本点到超平面的距离最大,但是如果有噪声点,那么这个距离就会受到噪声点的影响,有可能使得SVM得不到最优的超平面而导致分类器性能下降,乃至出现错误。

[思想理解·软间隔SVM惩罚参数]

题目内容

  • 如何选择SVM的惩罚参数C?它对模型性能有什么影响?

分析与解答

  • C是一个超参数,用于控制分类错误的惩罚强度。C过大,分类器会尽量减少在训练集上犯的错误,但这有可能导致过拟合。C值太小,则有可能会反过来——导致欠拟合。
  • 因此,通常采用交叉验证等方法来确定合适的C值。

上次更新于: