《机器学习实战》支持向量机

本章内容

简单介绍支持向量机
利用SMO进行优化
利用核函数对数据进行空间转换
将SVM和其他分类器进行对比

有人认为,SVM是最好的现成的分类器,“现成”指的是分类器不加修改即可直接使用。同时,意味着在数据上应用基本形式的SVM分类器就可以得到低错误率的结果。SVM能够对训练集之外的数据点做出很好的分类决策。
SVM有很多实现,先介绍最流行的一种实现,序列最小优化(Sequential Minimal Optimization,SMO) 算法。之后再介绍如何使用一种称为核函数 的方式将SVM扩展到更多数据集上。

SVM的一般流程
(1)收集数据:可以使用任意方法
(2)准备数据:需要数值型数据
(3)分析数据:有助于可视化分割超平面
(4)训练算法:SVM的大部分时间都源自训练,该过程主要实现两个参数的调优。
(5)测试算法:十分简单的计算过程就可以实现。
(6)使用算法:几乎所有分类问题都可以使用SVM,值得一提的是,SVM本身是一个二分类器,对多类问题应用SVM需要对代码做一些修改。

在这里插入图片描述
对上面两个式子使用拉格朗日乘子法可得:
在这里插入图片描述
对L(w,b,a)对w,b的偏导为零可得:
在这里插入图片描述
将上式代入L(w,b,a)中可以得到下面两个式子:
在这里插入图片描述
在这里插入图片描述
解出a后,求出w与b即可得到模型:
在这里插入图片描述

SMO高效优化算法

原理: 每次循环中选择两个alpha进行优化处理。一旦找到一对合适的alpha,那么就增大其中一个同时减小另一个。这两个alpha必须要在间隔边界之外,并且没有进行过区间化处理或者不在边界上。
SMO算法伪代码如下:

创建一个alpha向量并将其初始化为0向量
当迭代次数小于最大迭代次数时(外循环):
	对数据集中的每个数据向量(内循环):
		如果该数据向量可以被优化:
			随机选择另外一个数据向量
			同时优化这两个向量
			如果两个向量都不能被优化,退出内循环
	如果所有向量都没有被优化,增加迭代数目,继续下一次循环
完整版Platt SMO算法加速优化

改进之处:选择alpha的方式上。Platt SMO算法是通过一个外循环来选择第一个alpha值,并且其选择过程会在两种方式之间进行交替:一种方式是在所有数据集上进行单边扫描,另一种方式则是在非边界alpha中实现单边扫描。在选择第一个alpha值后,算法会通过一个内循环来选择第二个alpha值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值