因为毕设要用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