当前位置:主页 > python教程 > python机器学习理论与实战(五)支持向量机

支持向量机python实现

发布:2020-03-01 09:57:46 106


给大家整理了Python相关的编程文章,网友冀思洁根据主题投稿了本篇教程内容,涉及到python、支持向量机、python机器学习理论与实战(五)支持向量机相关内容,已被932网友关注,相关难点技巧可以阅读下方的电子资料。

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

       做机器学习的一定对支持向量机(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实现发送带有pdf附件的电子邮件

    发布:2023-04-04

    使用Python发邮件,是个简单的话题,可是如何可以优雅的轻松的群发邮件,并附加PDF附件,是很多小伙伴的日常工作。本文就来和大家分享一下实现方法,需要的可以参考一下


  • 最新python 字符串数组互转问题

    发布:2023-03-26

    这篇文章主要介绍了最新python 字符串数组互转问题,主要介绍了字符串转list数组问题和list数组转字符串问题,本文结合示例代码给大家介绍的非常详细,需要的朋友可以参考下


  • 一步步教你用Python提取PPT中的图片

    发布:2023-03-09

    python是一门很强大的语言,因为有着丰富的第三方库,所以可以说Python是无所不能的,下面这篇文章主要给大家介绍了关于用Python提取PPT中图片的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下


  • Python使用win32com.client的方法示例

    发布:2023-04-05

    本文主要介绍了Python使用win32com.client的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


  • 实例详解python连接mongodb密码认证

    发布:2020-02-04

    今天小编就为大家分享一篇python连接mongodb密码认证实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧


  • Python多线程实例详解

    发布:2020-01-11

    这篇文章主要介绍了Python 多线程实例详解的相关资料,需要的朋友可以参考下


  • Python3中省略号(...)用法介绍

    发布:2023-04-10

    本文主要介绍了Python3中省略号(...)用法介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


  • Python webdriver.Chrome()的使用解读

    发布:2023-03-25

    这篇文章主要介绍了Python webdriver.Chrome()的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教


网友讨论