pythonsvm模型优化_如何实现和优化 SVM(支持向量机)?

本文详细介绍了如何实现和优化支持向量机(SVM)。从理解SVM的基本原理开始,逐步讲解SMO算法的实现,包括核心代码、核函数缓存、误差值求解优化、冷热数据分离、Ensemble支持,以及进一步的核函数计算、稀疏向量和非稀疏向量的支持,最后提到了线性核的优化算法。通过这些步骤,可以构建出一个高效且功能完善的SVM模型。
摘要由CSDN通过智能技术生成

学习 SVM 的最好方法是实现一个 SVM,可讲理论的很多,讲实现的太少了。

假设你已经读懂了 SVM 的原理,并了解公式怎么推导出来的,比如到这里:

bcb64f20a152135305c827249c996f74.png

SVM 的问题就变成:求解一系列满足约束的 alpha 值,使得上面那个函数可以取到最小值。然后记录下这些非零的 alpha 值和对应样本中的 x 值和 y 值,就完成学习了,然后预测的时候用:

b866d679ac98e979b1fba7344912a16d.png

上面的公式计算出 f(x) ,如果返回值 > 0 那么是 +1 类别,否则是 -1 类别,先把这一步怎么来的,为什么这么来找篇文章读懂,不然你会做的一头雾水。

那么剩下的 SVM 实现问题就是如何求解这个函数的极值。方法有很多,我们先找个起点,比如 Platt 的 SMO 算法,它后面有伪代码描述怎么快速求解 SVM 的各个系数。

第一步:实现传统的 SMO 算法

现在大部分的 SVM 开源实现,源头都是 platt 的 smo 算法,读完他的文章和推导,然后照着伪代码写就行了,核心代码没几行:

target = desired output vector

point = training point matrix

procedure takeStep(i1,i2)

if (i1 == i2) return 0

alph1 = Lagrange multiplier for i1

y1 = target[i1]

E1 = SVM output on point[i1] – y1 (check in error cache)

s = y1*y2

Compute L, H via equations (13) and (14)

if (L == H)

return 0

k11 = kernel(point[i1],point[i1])

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值