【机器学习实战-python3】支持向量机(Support Vecrtor Machines SVM)

本文详述了支持向量机(SVM)的概念,包括最大间隔、SMO优化算法及其在Python3中的实现。通过实例展示了如何使用序列最小优化(SMO)算法训练SVM,并探讨了核函数的作用,特别是径向基核函数在手写识别问题中的应用。文章还介绍了如何调整参数以优化SVM的性能,并分享了实际测试中的错误率。
摘要由CSDN通过智能技术生成

工具:PythonCharm 书中的代码是python2的,而我用的python3,结合实践过程,这里会标注实践时遇到的问题和针对python3的修改。
实践代码和训练测试数据可以参考这里
https://github.com/stonycat/ML-in-Action
(原书作者也提供了源码,但是存在一些问题,且在python3中有部分修改)

有人认为SVM是最好的现成的分类器,“现成”指的是分类器不加修改即可直接使用,意味着直接应用SVM可以取得较低的错误率,对训练集之外的数据点做出很好的分类决策。
SVM有许多实现,这里介绍其中一种最流行的实现,即序列最小优化(SMO)算法,然后添加kernel函数将SVM拓展到更多数据集。
SVM是基于最大间隔分隔数据,若所给数据是二维的,则分隔线为一条直线,若数据为三维的,则分割线为一个平面,依次类推,随着数据维数的增加,分隔面就变成了超平面。而最大间隔,是让离分隔面最近的点,确保他们离分隔面尽可能远。SVM本身是一个二类分类器,若要解决多类问题,需要修改SVM。

一、寻找最大间隔
SVM中为了找到划分数据集的最佳分隔,确保最近的点到分隔的垂线最短,因此转化为了一个优化问题。这里分隔面可以定义为: wT+b ,将输入数据给分类器,会输出分隔标签,这里采用sigmoid函数,即 fwT+b ,可输出1/-1(与1或0无异)。间隔则通过 labelfwT+b 来计算。找到最小间隔的数据点,最大化其与间隔的距离。

argmaxw,b{ minn(label(wT+b))1||w||}
这里
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值