给大家介绍两款超级牛逼的算法!SVM · …
2018-07-06 01:19:11来源:博客园 阅读 ()
KKT 条件
先来看如何选取参数。在 SMO 算法中,我们是依次选取参数的:
选出违反 KKT 条件最严重的样本点、以其对应的参数作为第一个参数第二个参数的选取有一种比较繁复且高效的方法,但对于一个朴素的实现而言、第二个参数即使随机选取也无不可
可以以一张图来直观理解这里提到的诸多概念:
(画得有点乱,见谅……)
图中外面有个黑圆圈的其实就是传说中的“支持向量”,其定义会在文末给出
那么我们到底应该如何刻画“违反 KKT 条件”这么个东西呢?从直观上来说,我们可以有这么一种简单有效的定义:
得益于 Numpy 强大的 Fancy Indexing,上述置 0 的实现非常好写(???):
至于 SMO 算法的第二步,正如前文所说,它的本质就是一个带约束的二次规划,虽然求解过程可能会比较折腾,但其实难度不大。具体步骤会放在文末,这里就暂时按下
SMO 的效果
仍是先看看螺旋线数据集上的训练过程:
略显纠结,不过还是不错的
接下来看看蘑菇数据集上的表现;单就这个数据集而言,我们实现的朴素 SVM 和 sklearn 中的 SVM 表现几乎是一致的(在使用 RBF 核时),比较具有代表性的训练曲线则如下图所示:
也算是符合 SMO 这种每次只取两个参数进行更新的训练方法的直观
(虽然这些在 Python · SVM(二)· LinearSVM 中介绍过,不过为了连贯性,这里还是再介绍一遍)
于是,最优解自然需要满足这么个条件:
至此,SVM 算法的介绍就大致告一段落了。我们从感知机出发,依次介绍了“极大梯度法”、MBGD(Batch 梯度下降)法、核方法和 SMO 算法;虽然都有点浅尝辄止的味道,但覆盖的东西……大概还是挺多的
希望观众老爷们能够喜欢~
进群:125240963 即可获取数十套PDF哦
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- concurrent.futures模块简单介绍(线程池,进程池) 2019-07-24
- python内置模块介绍(一) 2019-07-24
- ORM 2019-07-24
- python算法与数据结构-数据结构中常用树的介绍(45) 2019-07-24
- python算法与数据结构-栈(43) 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash