支持向量机
讲道理,这一章有些不敢写。原因:复杂,牵涉到的东西很多,我只是大概看懂。严格的推导过程,推荐看:统计学习方法(李航),该篇借鉴学习了很多
线性可分的情况下
二类分类的问题,可以考虑如下图:(向量空间图)
从上图可以看出其实要分类,俩根虚线和实线都可以大体分出这俩类。现在我们想要最优的分类情况,很自然的想到中间那条实线是不是更好一点?现在就要求得中间那条实线的线性表示。直观上不难看出,要求最优的划分,那么这条线距离上面的类别最近的点的距离和距离下面类别最近的点的距离相等。
不烦假设,这条线(多维的情况是一个超平面)的表示为
w∗,b∗,x 都是向量。
那么, w∗x+b∗>0 表示上面的类别,不烦假设类别1,不烦设置该类别对应的函数值y为1。
w∗x+b∗<0 表示下面的类别,不烦假设类别-1,不烦设置该类别对应的函数值y为-1。
设置为1,-1是为了下面的数学处理(反正不影响)
函数间隔和几何间隔
为了求解最优结果,需要先引入一些概念。
函数间隔:对于给定的训练集,假设超平面(w,b),定义超平面(w,b)关于样本点(
xi,yi
)的函数间隔为:
如何理解呢?有各种解释,其实我感觉就是为了后面推导方便一点。
但是有些特性要知道:
因为训练集里面的所有y要么是1要么是-1(上面假设过的),在训练集中,如果是上方的类别1,那么 wx+b>0 ,y肯定等于1。同理下方的类别-1, wx+b<0 ,y肯定等于-1。
它们的乘积肯定>0,也就是上面定义的函数间隔大于0(看到定义-1,1有这个好处的)如果成比例的改变 w,b 超平面并不会改变(好理解吧,因为超平面 wx+b=0 )
几何间隔:给定训练集,假设超平面(w,b),定义超平面(w,b)关于样本点( xi,yi )的几何间隔为:
因为 yi 不是1就是-1,所以对距离不影响。
也就是点到分割超平面的距离。这个推导过程就不细讲,可以类比点到直线的距离公式
注意这里的 y0 和上述的函数值y不一样,而是向量x中的某一个特征。
特性:
给定超平面(w,b)及样本点( xi,yi ),它们的几何间隔是不变的。(可以理解吧)
超平面(w*t,b*t)和超平面(w,b)是一个超平面
求解步骤
- 首先找到,训练集中所有点到超平面(w,b)的距离最近的那个点(应该是俩个,类别1、-1各一个)
- 再移动超平面使得这个距离尽可能的大
那么上面可以转化为以下的表示:
又根据函数间隔与几何间隔之间的关系,可以得到以下表示:
不妨假设函数间隔等于1。为什么函数间隔等于1不影响上列表示呢?很多人有这个疑问,那么,下面我们来探讨一下为什么。不管函数间隔等于什么(可分的情况下肯定大于0),不等式俩边同时除以函数间隔可以转化为以下:
其中这里w是原来的w除以
由于分割超平面的特性,成比例的改变w和b,分割超平面不会变。所以不妨间隔函数为1(因为都可以转化为这样的形式,只是w改变为原来的某个倍数,而这不影响)。同理max那一行也一样。理解吧?
再可以转换为以下:(1/||w||最大可以转换为求||w||的平方的最小)
而这是一个凸二次规划问题。
构造拉格朗日函数:
根据拉格朗日对偶性,原始问题的对偶问题的是极大极小问题:
通过上面的式子,我们只要求得a就能把w和b求出来即得到分割超平面。关于拉格朗日乘子法和KKT条件推荐大神文章上面很详细。