支持向量机 - SVM
一、简单定义
支持向量机(support vector machines,SVM)是一种二类分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机:支持向量机还包括核技巧,这使它成为实质上的非线性分类器,支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题,支持向量机的学习算法是求解凸二次规划的最优化算法。
二、基本术语
- 线性分类器
在机器学习领域,分类的目标是指将具有相似特征的对象聚集。而一个线性分类器则透过特征的线性组合来做出分类决定,以达到此种目的。对象的特征通常被描述为特征值,而在向量中则描述为特征向量。 - 超平面
超平面是n维欧氏空间中余维度等于一的线性子空间,也就是必须是(n-1)维度。
这是平面中的直线、空间中的平面之推广(n大于3才被称为“超”平面),是纯粹的数学概念,不是现实的物理概念。 - 函数间隔
一般来说,一个点距离拆平面的远近可以表示分类预测的确信程度,越近的点预测的越为准确。超平面关于样本点的函数间隔是
可以看到,函数间隔其实就是类别标签乘上了f(x)的值,可以看到,该值永远是大于等于0的,正好符合了距离的概念,距离总不能是负的吧。那么为什么该值可以表示数据点到超平面的距离呢?我们不妨这样想,假设y=1,f(x)=1,其实就是将原来的分类超平面f(x) 向右平移了1个单位,而y=1,f(x)=2是将原来的分类超平面f(x) 向右平移了2个单位,所以f(x)值越大的点到分类超平面的距离当然越远
关键思想:可以通过等比例缩放w和b,来求得函数间隔,且其表示的超平面没有变化
详见文章底部链接,出自知乎
- 几何间隔
上述函数间隔存在一个问题,用函数间隔来衡量距离超平面的远近的时候,如若成比例地改变 w w w和 b b b,例如将它们改成 2 w 2w 2w和 2 b 2b 2b,超平面并没有改变,但函数间隔却变成为原来的2倍,因此为了解决这个问题,提出了几何间隔,几何间隔通过对分离超平面的法向量w加些约束,如规范化, ∣ ∣ w ∣ ∣ = 1 ||w|| =1 ∣∣w∣∣=1,使得间隔是确定的,这时函数间隔称为几何间隔。
详见文章底部链接,出自简书
- 间隔最大化(建模依赖的思想)
支持向量机学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面,对于线性可分的训练数据集而言,线性可分分离超平面有无穷多个(等价于感知机),但是几何间隔最大的分离超平面是唯一的
意思是我们需要找的超平面,这样的超平面对未知的新实例有很好的的分类预测能力。 - 对偶
应用拉格朗日对偶性,通过求解对偶问题得到原始问题,这样做的优点,一是对偶问题往往更容易求解;二是自然引入核函数,进而推广到非线性分类问题 - 支持向量
如图,在虚线上的实例点就是支持向量,在决定分离超平面时只有支持向量起作用,而其他实例点不起作用,如果移动支持向量将改变所求的解,但是如果在间隔边界以外移动其他实例点,甚至去掉这些点,则解释不会改变的。由于支持向量机在确定分离超平面中起决定性作用,所以将这种分类模型称为支持向量机。
- 核函数
思想:svm升维解决核函数不可分问题
目的:在高维空间中找到线性可分的超平面
三、线性可分支持向量机(硬间隔支持向量机)
3.1模型&策略
- 依据思想:硬间隔最大化
- 优化问题:对未知的新实例有很好的分类预测能力(相对于感知机)
- 几何表示:
最大间隔表示为
max w , b γ \mathop{\max}\limits_{w,b} \gamma w,bmaxγ
超平面(w,b)关于每个训练样本点的几何间隔至少是 γ \gamma γ,因此约束条件为
s . t . y i ( w ∣ ∣ w ∣ ∣ ⋅ x i + b ∣ ∣ w ∣ ∣ ) > = γ , i = 1 , 2 , . . . , N ( 这 里 要 求 了 γ 必 须 是 最 近 样 本 点 的 距 离 ) s.t. y_i(\frac{w}{||w||} \cdot x_i+\frac{b}{||w||})>=\gamma,i=1,2,...,N(这里要求了\gamma必须是最近样本点的距离) s.t.yi(∣∣w∣∣w⋅xi+∣∣w∣∣b)>=γ,i=1,2,...,N(这里要求了γ必须是最近样本点的距离)
又 γ = f ( x ) ∣ ∣ w ∣ ∣ \gamma=\frac{f(x)}{||w||} γ=∣∣w∣∣f(x)其中f(x)是函数间隔
因此,目标函数和限制条件可转变为
max w , b f ( x ) ∣ ∣ w ∣ ∣ \mathop{\max}\limits_{w,b} \frac{f(x)}{||w||} w,bmax∣∣w∣∣f(x)
s . t . y i ( w ⋅ x i + b ) > = f ( x ) , i = 1 , 2 , . . . , N s.t. y_i(w \cdot x_i+b)>=f(x),i=1,2,...,N s.t.yi(w⋅xi+b)>=f(x),i=1,2,...,N
又由于上述我们讲函数间隔的时候,有一个关键思想是等比例缩放w和b不改变原超平面,因此我们让f(x)归一化
于是式子变化为
max w , b 1 ∣ ∣ w ∣ ∣ \mathop{\max}\limits_{w,b} \frac{1}{||w||} w,bmax∣∣w∣∣1
s . t . y i ( w ⋅ x i + b ) > = 1 , i = 1 , 2 , . . . , N s.t. y_i(w \cdot x_i+b)>=1,i=1,2,...,N s.t.yi(w⋅xi+b)>=1,i=1,2,...,N
再变化
min w , b 1 2 ∣ ∣ w ∣ ∣ 2 \mathop{\min}\limits_{w,b} \frac{1}{2}||w||^2 w,bmin21∣∣w∣∣2
s . t . y i ( w ⋅ x i + b ) − 1 > = 0 , i = 1 , 2 , . . . , N s.t. y_i(w \cdot x_i+b)-1>=0,i=1,2,...,N s.t.yi(w⋅xi+b)−1>=0,i=1,2,...,N
3.2算法
- 拉格朗如乘子法
作用:将约束优化问题转化为无约束的优化问题
形式:
KKT条件:
我们运用拉格朗日乘子法来求解不等式约束问题
四、线性支持向量机(软间隔支持向量机)
- 依据思想:软间隔最大化
- 线性不可分场景:数据集不是线性可分的,通常情况是,训练数据中有一些特异点,将这些特异点去除后,剩下的大部分的样本点组成的集合是线性可分的
- 优化问题:解决线性不可分问题(相对于线性可分支持向量机)
- 方法:引进松弛变量
- 定义:
- 支持向量:
五、非线性支持向量机
- 依据思想:svm也可划分非线性数据集,它通过高维中的线形超平面在低维中的投影来完成非线形的划分。因此从直观上来讲,我们的模型必定各有一个升维的操作
- 优化问题:解决非线性问题(相对于求解线性分类问题来说)
- 方法:核技巧(核技巧不仅应用于支持向量机,而且应用于其他统计学习问题)
- 过程:利用核技巧,可以将线性分类的学习方法应用到非线性分类问题中去,将线性支持向量机扩展到非线性支持向量机,只需将线性支持向量机对偶形式中的内积换成核函数
- 序列最小最优化算法SMO
参考
[1]《统计学习方法》- 李航
[2] 简书 - SVM系列第三讲–函数间隔和几何间隔 - 作者:文哥的学习日记
[3] 李航《统计学习方法》啃书指导 - 作者:深度之眼官方账号
[4] 知乎 - SVM最大间隔超平面学习笔记及对函数间隔设置为1的思考 - 作者:娃哈哈AD钙奶
[5] KKT条件介绍 - 作者:johnnyconstantine