(采用SMO算法优化拉格朗日乘子a)
由于时间问题,以下训练采用的是数据集的一小部分进行训练与测试。
代码参考自: Dodo teacher
在其代码中的SMO算法部分,关于第一个变量ai选择那里,判断是否满足KKT条件,我作出了修改,修改成和书本一样的3个KKT条件。而Dodo那个我有点不明白为啥那样写,而且他的测试准确率是99%, 我改成和书本一样后测试准确率升到了100%。。。。。。
KKT条件看这里:
SMO算法关于第一个变量选择中的KKT条件简化推导
代码里面注释挺全的可以看里面
这里解释一些里面一小部分:
代码注释里关于Ei的更新过程,并没有遍历整个训练集,而是遍历所有支持向量(即a>0的实例x,即支持向量)
为啥a>0对应的实例是支持向量?
请看https://blog.csdn.net/weixin_43646592/article/details/109968198
#cod
本文介绍了如何使用SMO算法优化拉格朗日乘子a,以解决MNIST数据集的手写数字分类问题。通过调整代码中的KKT条件检查,实现了100%的测试准确率,相较于原有代码的99%有所提升。详细解释了支持向量的定义,并提供了数据集下载链接。
订阅专栏 解锁全文
1120





