机器学习第十课:支持向量机SVM(一)线性可分(硬间隔)SVM

这段内容太多,本想不写。但实在太基础了。本节内容主要理论来源于李航《统计学习方法》。从今天开始,我开始看第三遍了。

推荐首先结合这篇 机器学习第四课:SVM前置知识点(凸优化问题)看
http://blog.csdn.net/dajiabudongdao/article/details/52462942
支持向量机SVM是一种二类分类模型。支持向量机的学习策略就是间隔最大化,可形式化求解一个凸二次规划问题。

一、线性可分支持向量机

线性可分,简单点说, 存在一条线性分割,可以将集合的正标识与负标识分割开来。

1.函数间隔

1.1 简介
对于给定的训练集T和超平面(w,b)。定义超平面(w,b)关于样本点 (xi,yi) 的(不带符号的)函数间隔为 γi^=yi(wxi+b) ,函数间隔向量化为

γ^=y(wx+b)

超平面(w,b)关于训练数据集T的函数间隔为超平面(w,b)关于T中所有样本点的函数间隔最小值(注:到目前为止还没考虑符号问题)。

γ^=mini=1,...,Nγi^

这个东西我建议结合我们学过的初等几何的知识来看。
一般讲到这里,函数间隔值需要单位化。因为一旦(w,b)成倍增长变为(2w,2b)之类的如果按照原算法,函数间隔随之增长。这很合理合理,但是我们关注的不是绝对距离而是彼此相对距离,而不是关注吃了“增强合剂”或套了“露露大招”的等比例放大数据集。单位化规范化的函数间隔成为几何间隔。这就是一个有方向的值。
γ^=wwxi+bw

这好像很熟悉?看看我们初中点 (x0,y0) 到直线Ax+By+C=0的距离公式吧!

d=|Ax0+By0+C|A2+B2

蜜汁一致。。。。。
1.2函数间隔再推导一次

上次推导是什么意思?其实本质就是初中那点东西。

初中的直角坐标系中直线表示:Ax+By+C=0,设 x=(x;y),w=(A,B) (注,这里x是列向量),则原公式可以化为( wx+C=0
则点到直线公式可以写成 d=|wx+C|w2 ,这就是 γ=wwxi+bw
恩?什么地方不一样?对!前者有绝对值。绝对值的作用是对方向进行封印,前面说过,我们定义的距离是有方向的(因为正方向一边一类,负方向一边一类),所以这里没有绝对值。

那么问题来了。在算距离误差时候,我们也会只考虑正值。我们是不是也该调和下。我们第一反应自然是绝对值。但是,这种绝对值的写法难处理,非常不适合我们的需求。于是我们换了一种更通用的技巧:

因为样本点 (xi,yi) 中y仅可取{-1,1},所以带不符号的几何距离可以这么写。

γ^=yi(wwxi+bw)

1.2间隔最大化
我觉得在思考的时候以点到直线距离的二维思路来进行N推演是比较靠谱的。那么,我们回想下我们的最终目的是什么??当然是找到下图中间这条实线!这样的直线很多,我们的任务就是找到尽可能大的确信度。这就引出了间隔最大化。(直观的几何解释就是那最大化那条宽宽的Gap)
这里写图片描述
最大间隔平面变为最优化几何距离 γ 的问题。

注意:为了方便后期运算,下面的参数没有用向量的写法。

maxw,bγs.t.:yi(wwxi+bw)γ,i=1,2,...,N

因为在整理范围内等比例放大缩小对此问题并不影响,所以我们可以这样令 1||w||=γ ,则上面可以改写成这样形式
minw,bws.t.:yi(wxi+b)10,i=1,2,...,N

为了方便求导,||w||前面可以加上1/2。这就变成我们常见的问题SVM目标函数。
minw,b12w2s.t.:yi(wxi+b)10,i=1,2,...,N

2.目标函数求解

minw,b12w2s.t.:(yi(wxi+b)1)0,i=1,2,...,N

这里但额目标函数满足了KKT条件。这就是SVM巧妙的东西,也是核心思想的东西。这关乎到最大间隔的存在性与唯一性证明与求解方法。如果想深究建议直接看我这里的内容:
http://blog.csdn.net/dajiabudongdao/article/details/52462942

满足KKT条件的话,那么他的对偶形式肯定有解了。
我们直接把他的对偶形式写出来吧!对偶形式怎么写?
1.先用拉格朗日乘数法搞一下。
因为是求最小值,所以为要最小化拉格朗日函数

L(w,a,b)=12w2i=1Nαiyi(wxi+b)+i=1Nαi

求偏导吧!!
wL(w,b,a)=wi=1Nαiyixi=0bL(w,b,a)=i=1Nαiyi=0

得:
w=i=1Nαiyixi

我们要最小化拉格朗日函数,代入得原目标函数的对偶函数
minα12i=1Nj=1Nαiαjyiyj(xixj)i=1Nαii=1Nαiyi=0αi0,i=1,2,...,N

根据凸优化问题肯定有解,我们求得最优解的 α=(α1,α2,...,αN)T 向量。
我们就可以求出w与b了。。
w=i=1Nαiyixib=yii=1Nαiyi(xixj)

这里有个问题对于不是支持向量点 (xi,yi)αi=0 ,那么我们就得到的结果就仅仅与支持向量点有关了。这么说来他与逻辑斯蒂很大的不同就是不用管那么多不重要的点。

3.问题集中解答

3.1硬间隔是什么鬼?
上面所说的线性可分的情况都是硬间隔。如果近似线性可分的话我们需要加一个松弛变量。这种看似“马马虎虎”的行为我们称之为“软间隔”。这么说软间隔的弹性较大,硬间隔的弹性较小。
3.2什么是支持向量?
就是一侧边界上点组成的向量。支持就是边界支撑的意思。

你可能感兴趣的:(机器学习)