支持向量机SVM的SMO方法实现(C++)

9 篇文章 0 订阅
2 篇文章 0 订阅

因为毕设要用SVM,想深入了解一下。

看了几个中文博客作为初始的认识,再看了SVM鼻祖将SVM的论文,【见文章末尾】最后按照论文把把SVM实现,做了一个图像化例子:

首先上图,看下效果:

动态图

在对话框上随便点击一些点,左键点为绿色(正点),右键点击为红色(负点)


设置惩罚因子(默认为100),并点击SVM训练,得到超平面(本例中为一条直线),(被选为支持向量的样本点)增大显示:


修改惩罚因子C的值,重新训练SVM并绘制超平面,(变小的点没有被严格“分类正确”,即没有被分在支持向量远离超平面的位置):

惩罚因子越大,分类面越会考虑分类的准确性,因为分错一个惩罚大。

当惩罚因子小的时候,分类面会偏向大多数点的漂亮分类,有些奇异点可能会被分错。


模型说明:

在本程序中,

每个点为一个样本,样本的特征为2维,分别是途中各样本点的横纵坐标。

分类类别为两类:+1绿点,-1红点。

支持向量机的内核采用的是内积方式。K(xi,xj)= 向量xi与xj各对应元素相乘求和。


我的工程代码:(下载链接)

http://pan.baidu.com/s/1eQiR7NW

http://download.csdn.net/detail/hzq20081121107/7284409


参考文件:

1.SMO鼻祖论文 

sequential minimal optimization a fast Sequential Minimal Optimization:A Fast Algorithm for Training Support Vector Machines

http://www.msr-waypoint.com/pubs/69644/tr-98-14.pdf

2.SVM通俗理解,(里面某些贴图有错误,尚未更正)。

 http://blog.csdn.net/v_july_v/article/details/7624837  

3.SVM的推导过程,(没有完全看懂) 

http://www.cnblogs.com/biyeymyhjob/archive/2012/07/17/2591592.html  

4.SMO的一个实现:

http://blog.csdn.net/mutex86/article/details/10001523





  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值