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 07 Python
Python Web框架Flask信号机制(signals)介绍
Jan 01 Python
python实现将元祖转换成数组的方法
May 04 Python
python类:class创建、数据方法属性及访问控制详解
Jul 25 Python
python3.x 将byte转成字符串的方法
Jul 17 Python
Python Flask前后端Ajax交互的方法示例
Jul 31 Python
Python 实现遥感影像波段组合的示例代码
Aug 04 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
Mar 24 Python
通过自学python能找到工作吗
Jun 21 Python
最新版 Windows10上安装Python 3.8.5的步骤详解
Nov 28 Python
python3字符串输出常见面试题总结
Dec 01 Python
python实现简单猜单词游戏
Dec 24 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遍历目录输出目录及其下的所有文件示例
2014/01/27 PHP
对比分析php中Cookie与Session的异同
2016/02/19 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
2016/11/25 PHP
laravel 框架实现无限级分类的方法示例
2019/10/31 PHP
我的NodeJs学习小结(一)
2014/07/06 NodeJs
jQuery插件slider实现拖动滑块选取价格范围
2015/04/30 Javascript
两款JS脚本判断手机浏览器类型跳转WAP手机网站
2015/10/16 Javascript
jQuery 中ajax异步调用的四种方式
2016/06/28 Javascript
jQuery判断是否存在滚动条的简单方法
2016/09/17 Javascript
canvas实现粒子时钟效果
2017/02/06 Javascript
jQuery实现弹幕效果
2017/02/17 Javascript
微信小程序三级联动地址选择器的实例代码
2017/07/12 Javascript
深入理解React Native原生模块与JS模块通信的几种方式
2017/07/24 Javascript
jQuery实现倒计时功能 jQuery实现计时器功能
2017/09/19 jQuery
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
2020/07/15 Javascript
用Python中的字典来处理索引统计的方法
2015/05/05 Python
python3+selenium实现126邮箱登陆并发送邮件功能
2019/01/23 Python
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
python随机生成库faker库api实例详解
2019/11/28 Python
pyenv虚拟环境管理python多版本和软件库的方法
2019/12/26 Python
Python遍历字典方式就实例详解
2019/12/28 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
2020/04/13 Python
python3代码输出嵌套式对象实例详解
2020/12/03 Python
Html5实现首页动态视频背景的示例代码
2019/09/25 HTML / CSS
中国跨境海淘网站:考拉海购
2016/08/01 全球购物
澳大利亚在线时尚精品店:Hello Molly
2018/02/26 全球购物
奥巴马演讲稿
2014/01/08 职场文书
医院实习接收函
2014/01/12 职场文书
中学生差生评语
2014/01/30 职场文书
学生手册家长评语
2014/02/10 职场文书
领导班子专题民主生活会情况想汇报
2014/09/30 职场文书
2015欢度元旦标语口号
2014/12/09 职场文书
优秀学生干部事迹材料
2014/12/24 职场文书
专业技术人员年度考核评语
2014/12/31 职场文书
高考升学宴主持词
2019/06/21 职场文书
世界十大儿童漫画书排名,法国国宝漫画排第五,第二是轰动日本连环
2022/03/18 欧美动漫