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使用urllib模块开发的多线程豆瓣小站mp3下载器
Jan 16 Python
Python的批量远程管理和部署工具Fabric用法实例
Jan 23 Python
梯度下降法介绍及利用Python实现的方法示例
Jul 12 Python
Python实现购物程序思路及代码
Jul 24 Python
Python带动态参数功能的sqlite工具类
May 26 Python
使用Python的SymPy库解决数学运算问题的方法
Mar 27 Python
python实现简单五子棋游戏
Jun 18 Python
Django admin model 汉化显示文字的实现方法
Aug 12 Python
Python3 虚拟开发环境搭建过程(图文详解)
Jan 06 Python
python实现学生管理系统开发
Jul 24 Python
OpenCV图片漫画效果的实现示例
Aug 18 Python
pytorch中Schedule与warmup_steps的用法说明
May 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 页面编码声明方法详解(header或meta)
2010/03/12 PHP
PHP查询MySQL大量数据的时候内存占用分析
2011/07/22 PHP
PHP的autoload机制的实现解析
2012/09/15 PHP
迪菲-赫尔曼密钥交换(Diffie?Hellman)算法原理和PHP实现版
2015/05/12 PHP
php使用include 和require引入文件的区别
2017/02/16 PHP
jquery remove方法应用详解
2012/11/22 Javascript
三种方式获取XMLHttpRequest对象
2014/04/21 Javascript
jQuery Mobile 和 Kendo UI 的比较
2016/05/05 Javascript
表单中单选框添加选项和移除选项
2016/07/04 Javascript
jstree的简单实例
2016/12/01 Javascript
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
KOA+egg.js集成kafka消息队列的示例
2018/11/09 Javascript
VUE实现强制渲染,强制更新
2019/10/29 Javascript
微信小程序scroll-view点击项自动居中效果的实现
2020/03/25 Javascript
浅谈Vue3 Composition API如何替换Vue Mixins
2020/04/29 Javascript
[02:26]2018DOTA2亚洲邀请赛赛前采访-Newbee篇
2018/04/03 DOTA
[51:17]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第二场 10月30日
2020/10/31 DOTA
django自定义模板标签过程解析
2019/12/14 Python
python爬虫请求头设置代码
2020/07/28 Python
python实现自动清理重复文件
2020/08/24 Python
利用python实现汉诺塔游戏
2021/03/01 Python
英国最大的LED专业零售商:Led Hut
2018/03/16 全球购物
意大利在线药房:Saninforma
2021/02/11 全球购物
教育局长自荐信范文
2013/12/22 职场文书
教师评优事迹材料
2014/01/10 职场文书
九年级数学教学反思
2014/02/02 职场文书
期末评语大全
2014/05/04 职场文书
2015年实习单位评语
2015/03/25 职场文书
信息技术教研组工作总结
2015/08/13 职场文书
SQL Server 数据库实验课第五周——常用查询条件
2021/04/05 SQL Server
CSS3 制作的图片滚动效果
2021/04/14 HTML / CSS
mysql在项目中怎么选事务隔离级别
2021/05/25 MySQL
pytorch DataLoader的num_workers参数与设置大小详解
2021/05/28 Python
Python基础教程,Python入门教程(超详细)
2021/06/24 Python
Python实现生活常识解答机器人
2021/06/28 Python
js前端面试常见浏览器缓存强缓存及协商缓存实例
2022/06/21 Javascript