机器学习第十课:支持向量机SVM(一)线性可分(硬间隔)SVM
2016-09-26 09:19
225 查看
这段内容太多,本想不写。但实在太基础了。本节内容主要理论来源于李航《统计学习方法》。从今天开始,我开始看第三遍了。
推荐首先结合这篇 机器学习第四课: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)之类的如果按照原算法,函数间隔随之增长。这很合理合理,但是我们关注的不是绝对距离而是彼此相对距离,而不是关注吃了“增强合剂”或套了“露露大招”的等比例放大数据集。单位化规范化的函数间隔成为几何间隔。这就是一个有方向的值。
γ^=w∥w∥xi+b∥w∥
这好像很熟悉?看看我们初中点(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√,这就是γ=w∥w∥xi+b∥w∥。
恩?什么地方不一样?对!前者有绝对值。绝对值的作用是对方向进行封印,前面说过,我们定义的距离是有方向的(因为正方向一边一类,负方向一边一类),所以这里没有绝对值。
那么问题来了。在算距离误差时候,我们也会只考虑正值。我们是不是也该调和下。我们第一反应自然是绝对值。但是,这种绝对值的写法难处理,非常不适合我们的需求。于是我们换了一种更通用的技巧:
因为样本点(xi,yi)中y仅可取{-1,1},所以带不符号的几何距离可以这么写。
γ^=yi(w∥w∥xi+b∥w∥)
1.2间隔最大化
我觉得在思考的时候以点到直线距离的二维思路来进行N推演是比较靠谱的。那么,我们回想下我们的最终目的是什么??当然是找到下图中间这条实线!这样的直线很多,我们的任务就是找到尽可能大的确信度。这就引出了间隔最大化。(直观的几何解释就是那最大化那条宽宽的Gap)
最大间隔平面变为最优化几何距离γ的问题。
注意:为了方便后期运算,下面的参数没有用向量的写法。
⎧⎩⎨⎪⎪⎪⎪maxw,bγs.t.:yi(w∥w∥xi+b∥w∥)⩾γ,i=1,2,...,N
因为在整理范围内等比例放大缩小对此问题并不影响,所以我们可以这样令1||w||=γ,则上面可以改写成这样形式
⎧⎩⎨minw,b∥w∥s.t.:yi(wxi+b)−1⩾0,i=1,2,...,N
为了方便求导,||w||前面可以加上1/2。这就变成我们常见的问题SVM目标函数。
⎧⎩⎨⎪⎪minw,b12∥w∥2s.t.:yi(wxi+b)−1⩾0,i=1,2,...,N
2.目标函数求解
⎧⎩⎨⎪⎪minw,b12∥w∥2s.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)=12∥w∥2−∑i=1Nαiyi(wxi+b)+∑i=1Nαi
求偏导吧!!
∂wL(w,b,a)=w−∑i=1Nαiyixi=0∂bL(w,b,a)=∑i=1Nαiyi=0
得:
w=∑i=1Nαiyixi
我们要最小化拉格朗日函数,代入得原目标函数的对偶函数
⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪minα12∑i=1N∑j=1Nαiαjyiyj(xixj)−∑i=1Nαi∑i=1Nαiyi=0αi⩾0,i=1,2,...,N
根据凸优化问题肯定有解,我们求得最优解的α=(α1,α2,...,αN)T向量。
我们就可以求出w与b了。。
w=∑i=1Nαiyixib=yi−∑i=1Nαiyi(xi∗xj)
这里有个问题对于不是支持向量点(xi,yi),αi=0,那么我们就得到的结果就仅仅与支持向量点有关了。这么说来他与逻辑斯蒂很大的不同就是不用管那么多不重要的点。
3.问题集中解答
3.1硬间隔是什么鬼?上面所说的线性可分的情况都是硬间隔。如果近似线性可分的话我们需要加一个松弛变量。这种看似“马马虎虎”的行为我们称之为“软间隔”。这么说软间隔的弹性较大,硬间隔的弹性较小。
3.2什么是支持向量?
就是一侧边界上点组成的向量。支持就是边界支撑的意思。
相关文章推荐
- 机器学习之支持向量机SVM Support Vector Machine (一) 线性SVM模型与软硬间隔
- 机器学习(7)——支持向量机(三):线性支持向量机和软间隔最大化
- 机器学习(九):CS229ML课程笔记(5)——支持向量机(SVM),最优间隔分类,拉格朗日对偶性,坐标上升法,SMO
- 【机器学习-西瓜书】六、支持向量机(SVM):最大间隔;对偶问题;KKT条件
- 林轩田--机器学习技法--SVM笔记4--软间隔支持向量机(Soft-Margin Support Vector Machine)
- OpenCV之ml 模块. 机器学习:支持向量机(SVM)介绍 支持向量机对线性不可分数据的处理
- 支持向量机(SVM)线性可分解决实例--参考麦子学院机器学习基础5.1
- 【机器学习】使用Scikit-Learn库实现支持向量机(SVM)最大化分类间隔
- 机器学习20-线性支持向量机svm公式推导(二)
- 林轩田--机器学习技法--SVM笔记1--线性支持向量机(linear+SVM)
- 机器学习——支持向量机SVM之软间隔与正则化
- 机器学习笔记八 - SVM(Support Vector Machine,支持向量机)的剩余部分。即核技法、软间隔分类器、对SVM求解的序列最小化算法以及SVM的一些应用
- 【Python学习系列八】Python实现线性可分SVM(支持向量机)
- 机器学习(七、八):SVM(支持向量机)【最优间隔分类、顺序最小优化算法】
- 支持向量机SVM之处理线性不可分数据
- 机器学习之&&SVM支持向量机入门:Maximum Margin Classifier
- 机器学习:支持向量机(SVM)与Python实现第(三)篇
- 机器学习故事汇-搞定支持向量机(SVM)
- 机器学习之SVM(支持向量机)
- 机器学习 -- 支持向量机SVM