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

工具: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||}
这里
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值