二、SVM
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jiaoyangwm/article/details/81117958 </div>
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-cd6c485e8b.css">
<div id="content_views" class="markdown_views prism-dracula">
<!-- flowchart 箭头图标 勿删 -->
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
</svg>
<p></p><div class="toc"><div class="toc">
1、什么是SVM
SVM是一种监督式的二分类模型,它通过寻找最大间隔分类平面wx+b=0wx+b=0将正负类样本进行区分,对于线性不可分情况,通过核技法将低维空间映射到高维空间,使其线性可分。
2、线性可分SVM
1、决策面
对于线性可分数据集,下图实点表示+1类(正类),空点表示-1类(负类),xixi称为样本点。
学习的目标:在特征空间中找到一个分离超平面,可以将不同类别的实例进行分类
分离超平面:wTx(i)+b=0wTx(i)+b=0,由法向量w和截距b决定,法向量指向的一侧为正类。
正样本:wTx(i)+b>0wTx(i)+b>0
分离超平面的唯一性:当训练数据集线性可分时,存在无数个分离超平面,在保证决策面方向不变且不会出现错分的情况下移动决策面,会在两侧找到两个极限位置,越过两个极限位置会出现错分现象,两个极限位置的垂直距离就是分类间隔,我们的目标是找到具有最大间隔的决策面。
分类决策函数:f(x)=sign(wTx(i)+b)f(x)=sign(wTx(i)+b)
支持向量:最优分类平面对应的两个极限位置所穿过的样本点。
2、函数间隔和几何间隔
2.1 函数间隔
如果一个超平面wTx(i)+b=0wTx(i)+b=0
因为对于正样本y(i)=+1y(i)=+1
故如果一个样本被正确分类了,则:
所以函数间隔:
最大化函数间隔:最大化距离超平面最近的样本的函数间隔,也就是最大化函数间隔最小的点到超平面的函数间隔。
利用函数间隔存在的问题:只要成倍增加w和b,就能无限增大函数间隔。
2.2 几何间隔
点到平面的距离:
所以几何间隔为:
几何间隔的意义:所有样本点到分类平面的几何间隔的最小值
最好的分类平面就是最小几何间隔最大的平面
2.3 最优间隔分类器
1、目标函数和约束条件
2、令γ=1γ=1,目标函数变为平方
为什么是12||w||212||w||2?
① 1/2 可以在求导中消除平方
② ||w||2||w||2的函数特性更好
3、最终要求的问题
2.4 利用拉格朗日求解有约束的优化问题
有约束的最小化问题可以利用拉格朗日函数转化为无约束的问题,为了求解线性可分支持向量机的最优化问题,将它作为原始最优化问题,应用拉格朗日对偶性,通过求解对偶问题得到原始问题的最优解,这就是线性可分支持向量机的对偶算法。
我们可以构造一个函数,使其在可行域能与原来的目标函数完全一致,在可行域以外的数值非常大,甚至无穷大,则该无约束的新目标函数就和原来的有约束的问题一致了。获得拉格朗日函数之后,使用求导方法依然求解困难,进而需要将极小极大问题通过对偶转化为极大极小问题。
复习拉格朗日函数:
θp(w)θp(w)的极小值。
当所有约束都满足,即hi(w)=0,gi(w)≤0hi(w)=0,gi(w)≤0。
当所有约束都不满足的时候,如果hi(w)≠0hi(w)≠0,没有极小值。
利用对偶方法来对问题进行简化,也就是将极小极大问题,转化为极大极小问题。
2.5 利用拉格朗日求解最有间隔分类器
将约束条件写成拉格朗日不等式约束的形式,获得拉格朗日方程,也就是最终要求的方程。
如何求解目标方程:利用对偶方法,先调整w极小化目标方程,再调整αiαi求极大值
求解极大极小问题:
带入LL
说明拉格朗日函数只取决于训练集样本点的两两内积,和w无关,所以可以将maxαminwL()maxαminwL(),注意约束条件。
α>0α>0:是非边界上的向量,非支持向量
也就是对于分类模型f(x)=wTx+b=∑αiy(i)x(i)x+bf(x)=wTx+b=∑αiy(i)x(i)x+b,所以不起作用。
新来的数据点要和所有支持向量做内积
2.6 SMO算法(序列最小最优化算法)
坐标上升法:对于要优化的参数,先固定其他参数,优化一个参数α1α1,优化到最好,再优化其他参数。
SMO算法:
支持向量机问题可以转化为求解凸二次规划问题,这样的问题具有全局最优解,并且有许多算法可以用于这个问题的求解,但是当训练样本容量很大时,这些算法往往变得非常低效,以至于无法使用。
SMO算法是将大优化问题分解为多个小优化问题来求解的。这些小优化问题往往很容易求解,并且对它们进行顺序求解的结果与将它们作为整体来求解的结果完全一致的。在结果完全相同的同时,SMO算法的求解时间短很多。
因为有约束条件,所以需要选两个变量进行优化,因为如果改变一个αα的值使得约束条件仍然满足。
举例:假设α1,α2α1,α2
即:α2=y(2)(−∑mi=3αiy(i)−α1y(1))α2=y(2)(−∑i=3mαiy(i)−α1y(1))
也就是α2α2也随之确定。
SMO算法的目标是求出一系列alpha和b,一旦求出了这些alpha,就很容易计算出权重向量w并得到分隔超平面。
SMO算法的工作原理是:每次循环中选择两个alpha进行优化处理。一旦找到了一对合适的alpha,那么就增大其中一个同时减小另一个。这里所谓的”合适”就是指两个alpha必须符合以下两个条件,条件之一就是两个alpha必须要在间隔边界之外,而且第二个条件则是这两个alpha还没有进行过区间化处理或者不在边界上。
3、核技法
对在低维空间线性不可分的数据集,通过映射到高维空间,从而线性可分
本来做空间变换需要对空间中的所有点都做变换,但是这种计算太复杂,于是我们不显示处理数据,而是从模型上直接体现。
用线性分类方法求解非线性问题分为两步:
1)使用一个变换将原空间的数据映射到新空间
2)在新空间用线性分类学习方法从训练数据中学习分类模型
3.1 核函数
设χχ
使得所有的x,z∈χx,z∈χ
则K(x,z)K(x,z)称为映射函数。
3.2 核技巧的应用:
SVM核函数的选择对于其性能的表现有至关重要的作用,尤其是针对那些线性不可分的数据,因此核函数的选择在SVM算法中就显得至关重要。对于核技巧我们知道,其目的是希望通过将输入空间内线性不可分的数据映射到一个高纬的特征空间内使得数据在特征空间内是可分的,我们定义这种映射为ϕ(x)ϕ(x),那么我们就可以把求解约束最优化问题变为
但是由于从输入空间到特征空间的这种映射会使得维度发生爆炸式的增长,因此上述约束问题中内积ϕi⋅ϕjϕi⋅ϕj
从而避免了在特征空间内的运算,只需要在输入空间内就可以进行特征空间的内积运算。通过上面的描述我们知道要想构造核函数κ ,我们首先要确定输入空间到特征空间的映射,但是如果想要知道输入空间到映射空间的映射,我们需要明确输入空间内数据的分布情况,但大多数情况下,我们并不知道自己所处理的数据的具体分布,故一般很难构造出完全符合输入空间的核函数,因此我们常用如下几种常用的核函数来代替自己构造核函数:
线性核函数
k(x,xi)=x⋅xik(x,xi)=x⋅xi
多项式核函数可以实现将低维的输入空间映射到高纬的特征空间,但是多项式核函数的参数多,当多项式的阶数比较高的时候,核矩阵的元素值将趋于无穷大或者无穷小,计算复杂度会大到无法计算。
- 高斯(RBF)核函数
高斯径向基函数是一种局部性强的核函数,其可以将一个样本映射到一个更高维的空间内,该核函数是应用最广的一个,无论大样本还是小样本都有比较好的性能,而且其相对于多项式核函数参数要少,因此大多数情况下在不知道用什么核函数的时候,优先使用高斯核函数。
- sigmoid核函数