SVM
来源:互联网 发布:ug编程切削层怎么设置 编辑:程序博客网 时间:2024/06/15 14:06
支持向量机
支持向量机的学习方法包含由简单到困难的三种分类方法:
- 线性可分支持向量机
- 线性不可分支持向量机
- 非线性支持向量机
线性可分支持向量机
假设给定一个特征空间上有训练数据集
目标是找出一个(超)平面,
但是一般来说,存在无穷个超平面可以将两类数据正确地分开。但是线性可分支持向量机利用间隔最大化求最优分离超平面,同时,此解也是唯一的。
函数间隔与几何间隔
- 一个点距离分离超平面的远近可以表示分类预测的确信程度,也就是说,点r到超平面的距离越远,我们就越确定r是一个分类正确的点。
- 如果超平面
wx+b=0 已经确定,那么点r到超平面的距离就是|wx+b|
- 如果超平面
- 用点距离的符号和分类的符号相乘来表示预测是否正确
- 用
y(wx+b) 的符号来表示分类的是否正确
- 用
总的来说,我们可以使用
对于给定的训练集和超平面
那么超平面关于数据集T的函数间隔就是对T上所有样本数据点的函数间隔的最小值,即
同时,由于上式中的函数间隔会随着超平面的放缩而放缩,所以我们必须将其“标准化”,也就是对超平面的法向量加上约束,这里是L2范数。此时的函数间隔变成了几何间隔(geometric margin)。点A与超平面(w,b)的距离是一条线段:
L2范数表示向量元素的绝对值的平方再开方,表示从原点出发到向量确定的点的欧式距离
如果分类正确,点
而超平面对于训练数据的几何间隔为超平面(w,b)关于T中所有点的几何间隔的最小值。
间隔最大化
我们的目标就是找到好的超平面对样本数据点进行分割,所谓最好的定义就是:
- 从函数间隔的角度看,就是最大化函数间隔,即最大化正确性和确信度
- 从几何间隔的角度看,就是最大化样本数据点到超平面的距离
转换成数学语言,就是:
- 首先,我们希望能最大化这个间隔,即最大化目标
- 其次,我们还必须限制这个间隔至少是
γ ,即约束条件
转化一下表达:
由于在最优化问题中,函数的缩放对最优化并没有影响,所以为了今后的推导方便,我们对最优化目标进行缩放,同时为了简便计算,令
为了便于后续的计算,继续进行简化:把最大化
这是一个带约束条件的最优化问题,我们可以和最大熵模型中一样使用拉格朗日对偶性来解决
拉格朗日对偶性
先将需要优化的目标函数转化为拉格朗日函数的形式:
先求min的部分:分别对w和b求偏导并令偏导数等于0:
得出
得出
将两个结果代入原函数中:
转化成对偶问题,即
距离分割超平面最近的数据点,也就是支持向量,总的来说,就是这些支持向量们决定了超平面的位置,其他离得远的点其实不起什么作用。换到上面数学公式中,也就是非支持向量的点的
线性不可分支持向量机
之前的SVM设定的条件在现实环境中有可能会非常苛刻,那么我们可以做的就是稍微放松一下限定条件,从“硬”间隔转化到“软”间隔。原本有可能会有一些点是噪声,或者样本数据本来就是那个样子,如果去掉那些点就直接线性可分了,此时如果将限制条件放松,我们又有机会找到分割的超平面了。
软间隔最大化
从数学上讲,线性不可分意味着不能满足之前
延续之前的思路,只不过现在要最大化的是软间隔了:
拉格朗日对偶性
继续用拉格朗日对偶性来解决优化问题:
找出原始问题的对偶问题:
转换成拉格朗日函数形式:
还是先求极小问题,让L分别对w、b和
得出
得出
得出
对
非线性支持向量机
如果我们遇到了更复杂的情况,比如无法用一条直线将数据点分割,这个时候我们就需要核技巧了。所谓核技巧就是通过一个转换函数将低维空间中的数据点映射到高维空间中去。然后我们就可以在高维空间中用直线(超平面)进行分割了。
核函数
我们可以用带核函数的内积去替换普通SVM中的内积,即用
核函数的种类
在Python的机器学习包sklearn
中,可以对SVM的核函数种类进行参数调整。
- 当数据量足够大,feature足够多时,每种核的效果差不多
- 当数据量不够大,feature很多时,用线性核
- 当数据量一般,feature较少时,用非线性核
- 当数据量足够大,feature较少时,用线性核可以节约时间
序列最小最优化算法
普通的求解
SMO的主要思想是把一个复杂的计算转化成多个简单的计算,总体下来大大节约了计算时间
先选择两个变量
假设选择了两个变量
接下来就是根据约束条件不断地更新两个
求解变量
由于同时求解
当两个y不是同一类时,即
y1≠y2 时,有α1−α2=β ,结合所有的α 都要满足0≤αi≤C 的条件:- 那么当
α1 最小可为0,此时的α2 就是−β - 而
α1 最小它也是0,所以0也可以作为它的下限 所以,由于不知道
−β 是什么情况,α2 的下限L为0或者−β ,取二者其中最大的那一个α1 最大可为C,那么此时的α2 就是C−β - 同时,
α2 最大可为C - 所以,
α1 的上限为C或者C−β ,取二者的较小值
- 那么当
同理:
- 当两个y为同类的时候,即
y1=y2 时,有α1+α2=β ,同样可以得出L=max(0,β−C) ,H=min(C,β) 。
把约束条件
为了简便计算,可令后面的复杂式子为w,那么我们可以用
代入之前的目标函数:
并对
化简后,代入得:
令
加上约束条件
求出
- SVM
- SVM
- SVM
- svm
- svm
- svm
- svm
- SVM
- SVM
- SVM
- SVM
- svm
- SVM
- SVM
- SVM
- SVM
- SVM
- SVM
- django.db.utils.OperationalError: 1050解决方案
- JSONArray的应用
- Extjs GridPanel用法详解
- laravel5.1部署
- 利用Github实现团队开发
- SVM
- OpenCV编程->图像拷贝
- 点击放大 swiper+photoswipe
- [图形学] B样条曲线
- 集合映射 map list array set
- eclipse配置环境问题
- CVTE 2018 Android在线笔试编程题
- 1.jQuery()和$()的由来
- JAVA依赖注入