python机器学习理论与实战(五)支持向量机


Posted in Python onJanuary 19, 2018

       做机器学习的一定对支持向量机(support vector machine-SVM)颇为熟悉,因为在深度学习出现之前,SVM一直霸占着机器学习老大哥的位子。他的理论很优美,各种变种改进版本也很多,比如latent-SVM, structural-SVM等。这节先来看看SVM的理论吧,在(图一)中A图表示有两类的数据集,图B,C,D都提供了一个线性分类器来对数据进行分类?但是哪个效果好一些?

python机器学习理论与实战(五)支持向量机

(图一)

        可能对这个数据集来说,三个的分类器都一样足够好了吧,但是其实不然,这个只是训练集,现实测试的样本分布可能会比较散一些,各种可能都有,为了应对这种情况,我们要做的就是尽可能的使得线性分类器离两个数据集都尽可能的远,因为这样就会减少现实测试样本越过分类器的风险,提高检测精度。这种使得数据集到分类器之间的间距(margin)最大化的思想就是支持向量机的核心思想,而离分类器距离最近的样本成为支持向量。既然知道了我们的目标就是为了寻找最大边距,怎么寻找支持向量?如何实现?下面以(图二)来说明如何完成这些工作。

python机器学习理论与实战(五)支持向量机

(图二)

假设(图二)中的直线表示一个超面,为了方面观看显示成一维直线,特征都是超面维度加一维度的,图中也可以看出,特征是二维,而分类器是一维的。如果特征是三维的,分类器就是一个平面。假设超面的解析式为python机器学习理论与实战(五)支持向量机,那么点A到超面的距离为python机器学习理论与实战(五)支持向量机,下面给出这个距离证明:

python机器学习理论与实战(五)支持向量机

(图三)

在(图三)中,青色菱形表示超面,Xn为数据集中一点,W是超面权重,而且W是垂直于超面的。证明垂直很简单,假设X'和X''都是超面上的一点,

python机器学习理论与实战(五)支持向量机

因此W垂直于超面。知道了W垂直于超面,那么Xn到超面的距离其实就是Xn和超面上任意一点x的连线在W上的投影,如(图四)所示:

python机器学习理论与实战(五)支持向量机

套进拉格朗日乘子法公式得到如(公式五)所示的样子:

python机器学习理论与实战(五)支持向量机

(公式五)

        在(公式五)中通过拉格朗日乘子法函数分别对W和b求导,为了得到极值点,令导数为0,得到

python机器学习理论与实战(五)支持向量机

 ,然后把他们代入拉格朗日乘子法公式里得到(公式六)的形式:

python机器学习理论与实战(五)支持向量机

(公式六)

     (公式六)后两行是目前我们要求解的优化函数,现在只需要做个二次规划即可求出alpha,二次规划优化求解如(公式七)所示:

python机器学习理论与实战(五)支持向量机

(公式七)

         通过(公式七)求出alpha后,就可以用(公式六)中的第一行求出W。到此为止,SVM的公式推导基本完成了,可以看出数学理论很严密,很优美,尽管有些同行们认为看起枯燥,但是最好沉下心来从头看完,也不难,难的是优化。二次规划求解计算量很大,在实际应用中常用SMO(Sequential minimal optimization)算法,SMO算法打算放在下节结合代码来说。

参考文献:

     [1]machine learning in action. Peter Harrington

     [2] Learning From Data. Yaser S.Abu-Mostafa

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python去掉字符串中空格的方法
Mar 11 Python
Python获取脚本所在目录的正确方法
Apr 15 Python
Python数据分析之双色球统计单个红和蓝球哪个比例高的方法
Feb 03 Python
python使用opencv驱动摄像头的方法
Aug 03 Python
python的concat等多种用法详解
Nov 28 Python
Python装饰器基础概念与用法详解
Dec 22 Python
python对Excel按条件进行内容补充(推荐)
Nov 24 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
Apr 08 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
Sep 23 Python
Python logging自定义字段输出及打印颜色
Nov 30 Python
python实现socket简单通信的示例代码
Apr 13 Python
一篇文章弄懂Python中的内建函数
Aug 07 Python
Python读取图片为16进制表示简单代码
Jan 19 #Python
Python实现pdf文档转txt的方法示例
Jan 19 #Python
浅谈Python实现2种文件复制的方法
Jan 19 #Python
用Python进行简单图像识别(验证码)
Jan 19 #Python
flask中使用蓝图将路由分开写在不同文件实例解析
Jan 19 #Python
python模拟事件触发机制详解
Jan 19 #Python
flask使用session保存登录状态及拦截未登录请求代码
Jan 19 #Python
You might like
PHP 远程文件管理,可以给表格排序,遍历目录,时间排序
2009/08/07 PHP
几个优化WordPress中JavaScript加载体验的插件介绍
2015/12/17 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
2019/04/23 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
js 匿名调用实现代码
2009/06/19 Javascript
js 操作select相关方法函数
2009/12/06 Javascript
js textarea自动增高并隐藏滚动条
2009/12/16 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
js和jquery中循环的退出和继续下一个循环
2014/09/03 Javascript
javascript的变量、传值、传址、参数之间关系
2015/07/26 Javascript
浅析JSONP技术原理及实现
2016/06/08 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
2016/11/07 Javascript
详解Vue中数组和对象更改后视图不刷新的问题
2018/09/21 Javascript
小程序api实现promise封装过程解析
2019/11/21 Javascript
Node.js API详解之 readline模块用法详解
2020/05/22 Javascript
Python内置数据类型详解
2014/08/18 Python
python中如何使用正则表达式的非贪婪模式示例
2017/10/09 Python
python+pillow绘制矩阵盖尔圆简单实例
2018/01/16 Python
django加载本地html的方法
2018/05/27 Python
Python中实例化class的执行顺序示例详解
2018/10/14 Python
通过shell+python实现企业微信预警
2019/03/07 Python
Win10环境python3.7安装dlib模块趟过的坑
2019/08/01 Python
python保存log日志,实现用log日志画图
2019/12/24 Python
如何在windows下安装配置python工具Ulipad
2020/10/27 Python
HTML5实现QQ聊天气泡效果
2017/06/26 HTML / CSS
HTML5计时器小例子
2013/10/15 HTML / CSS
canvas实现扭蛋机动画效果的示例代码
2018/10/17 HTML / CSS
HTML5页面无缝闪开的问题及解决方案
2020/06/11 HTML / CSS
Linux文件系统类型
2012/09/16 面试题
EJB的角色和三个对象
2015/12/31 面试题
艺术应用与设计个人的自我评价
2013/11/23 职场文书
中专生自我鉴定书范文
2013/12/28 职场文书
社区活动邀请函范文
2014/01/29 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
担保贷款承诺书
2015/04/30 职场文书
2016年共产党员公开承诺书
2016/03/24 职场文书