支持向量机SVM算法原理笔记1
2016-07-12 18:08
253 查看
最近在学习李航编写的《统计学习方法》一书,看到SVM这一章时遇到了一些困难,在翻阅很多资料之后对其有了一定的理解,所以打算写篇博客来记录一下,后面如果有时间也会把前面几章中的算法加以整理。在看这本书的同时大多加以参考hankcs在码农场中所写的机器学习系列文章,写的很不错,有理论分析也有代码实现,很适合机器学习入门者学习和理解。《统计学习方法》里讲述的太过理论化,假如很多东西我们直接当作已知定理去用可能会更容易理解。所以接下来就直接介绍一些结论,具体的推导可以参考原著或者这篇文章。
首先假设样本集线性可分,其实SVM就是找到一个划分超平面将不同类别样本分开,但是这样的超平面会有很多,我们要找到最鲁棒的那个,即对样本扰动的容忍最好,泛化能力最强的那个划分超平面。用下面的线性方程来表示划分超平面:
![](http://img.blog.csdn.net/20160711112059364)
所以任何一个样本点到该平面的几何间隔为:
![](http://img.blog.csdn.net/20160711114842316)
如果所有样本点都可以正确被分类,则我们假设所有点到超平面的距离均大于等于1(可以通过将w和b缩放的形式达到该目标),并且称距离唯一的点为支持向量,两个异类支持向量到划分超平面的距离之和为间隔,如下图所示:
![](http://img.blog.csdn.net/20160712173226815)
为了找到具有最大间隔的划分超平面(最大化2/||w||),即最小化1/2*||w||,所以我们的模型就转化成了如下所示的具有样本数N个约束条件的凸二次规划问题:
![](http://img.blog.csdn.net/20160712173508216)
使用拉格朗日乘子法将上述问题转化为其对偶问题,即加入N个拉格朗日乘子。其中原始问题中的参数w和对偶问题中的α之间的关系如右图所示:
![](http://img.blog.csdn.net/20160712173702026)
![](http://img.blog.csdn.net/20160712174651783)
有因为其需要满足KKT条件,如下所示。由KKT条件中的3式可知,α_i和y_i*f(x_i)-1二者必有一个为零,也就是说无外乎下面两种情况:
1,α_i=0,这样的样本点对最终的划分超平面的参数W不会产生任何影响,对超平面也没有影响;
2,y_i*f(x_i)-1=0,也就是y_i*f(x_i)=1,这样的样本点就是支持向量的点,位于最大间隔边界上。
所以说最终的划分超平面只与支持向量有关。
![](http://img.blog.csdn.net/20160712173945092)
**
总结一下就是:
对于给定样本集D={(x1,y1),(x2,y2),。。。,(xN,yN)},找到其划分超平面f(x)=wx+b;
对该问题进行建模,得到如下模型,注意还要满足是那个面提到的KTT条件:
![](http://img.blog.csdn.net/20160712180224868)
**
所以到这里就完成了SVM模型的建立,接下来就是求解上述问题,如果按照传统的二次规划问题进行求解其复杂度会与样本集大小成正比规模增加,所以Platt等人提出了高效的解决方案SMO算法。SMO算法的具体思路将在下篇博文中加以介绍。
首先假设样本集线性可分,其实SVM就是找到一个划分超平面将不同类别样本分开,但是这样的超平面会有很多,我们要找到最鲁棒的那个,即对样本扰动的容忍最好,泛化能力最强的那个划分超平面。用下面的线性方程来表示划分超平面:
所以任何一个样本点到该平面的几何间隔为:
如果所有样本点都可以正确被分类,则我们假设所有点到超平面的距离均大于等于1(可以通过将w和b缩放的形式达到该目标),并且称距离唯一的点为支持向量,两个异类支持向量到划分超平面的距离之和为间隔,如下图所示:
为了找到具有最大间隔的划分超平面(最大化2/||w||),即最小化1/2*||w||,所以我们的模型就转化成了如下所示的具有样本数N个约束条件的凸二次规划问题:
使用拉格朗日乘子法将上述问题转化为其对偶问题,即加入N个拉格朗日乘子。其中原始问题中的参数w和对偶问题中的α之间的关系如右图所示:
有因为其需要满足KKT条件,如下所示。由KKT条件中的3式可知,α_i和y_i*f(x_i)-1二者必有一个为零,也就是说无外乎下面两种情况:
1,α_i=0,这样的样本点对最终的划分超平面的参数W不会产生任何影响,对超平面也没有影响;
2,y_i*f(x_i)-1=0,也就是y_i*f(x_i)=1,这样的样本点就是支持向量的点,位于最大间隔边界上。
所以说最终的划分超平面只与支持向量有关。
**
总结一下就是:
对于给定样本集D={(x1,y1),(x2,y2),。。。,(xN,yN)},找到其划分超平面f(x)=wx+b;
对该问题进行建模,得到如下模型,注意还要满足是那个面提到的KTT条件:
**
所以到这里就完成了SVM模型的建立,接下来就是求解上述问题,如果按照传统的二次规划问题进行求解其复杂度会与样本集大小成正比规模增加,所以Platt等人提出了高效的解决方案SMO算法。SMO算法的具体思路将在下篇博文中加以介绍。
相关文章推荐
- apache php 配置 CI 框架
- cocos2dx-3.10-lua_函数
- UICollection scrollToItemAtIndexPath: 不工作的问题
- Laravel 重写用户登录
- J.U.C
- android MPAndroidChart饼图实现图例后加数字或文本(定制图例)
- 开源项目导入eclipse的一般步骤
- iOS 类似扣扣微信中腾讯新闻的新闻列表实现
- cocos2dx-lua_热更新_官方示例_AssetsManagerExTest
- Android - Glide V3 图片加载框架
- 高性能java实现不同服务器直接的数据库迁移。
- linux 设置代理上网
- 前端设计——js实现图片切换的淡入淡出
- Leetcode 24. Swap Nodes in Pairs (Easy) (cpp)
- dubbo+zookeeper例子
- spring boot单元测试(转)
- FastJSON、Gson和Jackson性能对比
- android 笔记11 得到布局,状态栏显示隐藏,代码优化
- window 上安装 Cygwin 和 SSH 服务
- android异步处理,分析Handle消息机制