支持向量机SVM
支持向量机
[了解]小故事
在很久很久以前的情人节,大侠要去救他的爱人,但魔鬼和他玩了一个游戏魔鬼早桌子上似乎有规律放了两种颜色的球,说:"你用一根棍分开它们.要求:尽量在放更多球之后,仍然使用."
于是大侠这样放,干得不错
然后魔鬼,又在桌子上放了更多的球,似乎有一个球粘错了阵营
怎么办?
把分界的小棍儿变粗
SVM就是试图把棍放在最佳位置,好让在棍的两边有尽可能大的间隙
现在即使魔鬼放了更多的球,棍仍然是一个好的分界线
然后,在SVM工具箱中有另一个更加重要的技巧 (trick).魔鬼看到大侠已经学会了一个trick,于是魔鬼给大侠一个新的挑战.
现在,大侠没有棍可以很好的帮他分开两种球了,现在怎么办呢?
当然像所有武侠片中一样大侠桌子一拍,拍飞到空中.然后,凭借大侠的轻功,大侠抓起一张纸,插到了两种球的中间
现在,从魔鬼的角度看这些球,这些球看起来像是被一条曲线分开了
再之后,无聊的大人们,把上面的物体起了别名:
球--[data] 数据
棍子--[calssifier]--分类
最大间隙--[optimizayion]最优化
拍桌子--[kernelling] 核方法
纸--[hyperplane]超平面
案例来源:http://bytesizebio.net/2014/02/05/support-vector-machines-explained-well/
[理解]svm的定义
SVM全称是supported verctor machine (支持向量机),即寻找到一个超平面是样本分成两类,并且间隔最大
SVM能够执行线性或非线性分类,回归,甚至是异常值检测任务.是机器学习领域最受欢迎的模型之一.SVM特别适用于中小型复杂数据集的分类
[理解]]超平面最大间隔
上图显示了三种可能得线性分类器的决策边界:
虚线所代表的模型表现非常糟糕,甚至都无法正确实现分类.其余两个模型在这个训练集上表现堪称完美,但是它们的决策边界与实例过于接近,导致在面对新实例时,表现可能不会太好
右图中的实现代表SVM分类器的决策边界,不仅分离了两个类别,且尽可能远离最近的训练实例
[知道]硬间隔
如果样本线性可分,在所有样本分类都正确法的情况下寻找最大间隔,这就是硬间隔
如果出现异常值,或者样本不能线性可分,此时硬间隔无法实现
当有一个额外异常值的鸢尾花数据,左图的数据根本找不出硬间隔,而右图最终显示的决策边界与我们之间所看到的无异常值时的决策边界也大不相同,可能无法很好地泛化
[知道]软间隔和惩罚系数
允许部分样本,在最大间隔之内,甚至在错误的一遍,寻找最大间隔,这就是软间隔
目标是尽可能在保持间隔宽阔和限制间隔违例之间到良好的平衡
通过惩罚系数C来控制这个平衡:C值越小,则间隔越宽,但是间隔违例也会越多
左边使用了高C值,分类器的错误样本(间隔违例)较少,但是间隔也较小.
右边使用了低C值,间隔大了很多,但是位于间隔上的实例也更多.
[知道]核函数
核函数将原始输入空间映射到新的特征空间,使得原本线性不可分的样本在核空间可分
支持向量机API使用
[知道]支持向量机的API
class sklearn.svm.LinearSVC(C=1.0)
C:惩罚系数,类似于线性回归中的正则化系数
linearSVC API的使用方式:
from sklearn.svm import LinearSVC
mysvc = LinearSVC(C=30)
mysvc.fit(X_standard, y)
print(mysvc.score(X_standard, y))
SVM算法原理
了解支持向量机的推导过程
目标函数确定
SVM思想:
要去求一组参数(w,b),使其构建的超平面函数能够最优地分离两个集合.
样本空间忍一段线x到平面(w,b)的距离可写成:
欲找到具有最大间隔的划分超平面.也就是要找到能满足下式中约束的参数w和b,使得间隔y最大
距离超平面最近的几个训练样本点使上式等号成立,他们被称为"支持向量",两个异类向量到超平面的额距离之和为:
svm我们要求解的目标是:在能够将所有样本能够正确分割开的基础上,求解最大问题
1.最大间距离表示:
2.训练样本能够能够正确分类:
我们希望在将所有样本正确分类的的情况,实现间隔最大化.所以,我们的目标函数可以写为:
我们可以将其转换为最小化问题:
1.||w||范数为:sqrt(w1²+w2²+...+wn²),加上平方之后将根号去掉,不影响优化目标.
2.1/2是为了求导的时候,能够将系数去掉
约束条件优化文艺转换
目标函数是一个带有约束的优化问题,不太容易直接求解,所欲先使用拉格朗日乘子法将其转换为多元极值问题,其转换过程如下:
f(x)是我们的原问题,g(x)为原问题的约束条件.所以约束条件转换为:
我们的问题可以转换为:
此时问题是满足所有样本都能正确分类的情况下,求解极小极大值问题:
对偶问题转换
1.对偶问题转换
对w求偏导,并令其等于0:
得出:
对b求偏导:
将对w,b求偏导的结果带入到原拉格朗日公式中
此时,求解当a是什么值时,该值会变得很大,当求出a值,在求解w,b值.此时,就变成了极大极小值问题
确定超平面
1.求解当a什么值时公式值最大
将上面的问题转换为极小值问题:
将训练样本带入上面公式,求解出a值,然后,将a值带入下面公式计算w,b的值:
最后求得分离超平面
核函数
[知道]核函数的作用
核函数,是将原始输入空间映射到新的特征空间,从而,使得原本线性不可分的样本在核空间可分
下图所示的两类数据,分别分布为两个圆圈的形状,这样的数据本身就是线性不可分,此时该如何把这两类数据分开呢?
[理解]核函数的分类
当存在线性不可分的场景时,我们需要使用核函数来提高训练样本的维度或者将训练样本头像高维
高斯函数使用较多.
1.线性核:一般是不增加数据维度,而是预先计算内积,提高速度
2.多项式核:一般是通过增加多项式特征,提升数据,并计算内积
3.高斯核(RBF,径向基函数): 一般是通过将样本投射到无限维空间,使得原来不可分的数据变得可分
[理解]高斯函数
高斯函数(RBF),其中y为超参数
gamma是超参数,作用与标准差相反,gamma越大,高斯分布越窄,gamma越小,高斯分布越宽
举个例子:
任务:找到一种方法,用一条线将数据完美分类.如果只从1维的角度考虑,这是一项不可能完成的任务,但可以用升维度的办法来解决问题
让我们引入一个函数f(x),图像如下图所示.将x的每个值映射到其对应的输出.使得所有蓝点在Y轴的输出更大,而红点在Y轴的输出偏小.此时,我们可以使用一条水平线将数据完美分类
这个解决方案看起来很"巧妙",我们可以借助径向基函数(RBF)来实现
09-21
3369
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
03-19
1898
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
06-20
01-25
12-29
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交