svm算法 java实现_SVM算法实现(一)

关键字(keywords):SVM 支持向量机 SMO算法 实现 机器学习

假设对SVM原理不是非常懂的,能够先看一下入门的视频,对帮助理解非常实用的,然后再深入一点能够看看这几篇入门文章,作者写得挺具体,看完以后SVM的基础就了解得差点儿相同了,再然后买本《支持向量机导论》作者是Nello Cristianini 和 John Shawe-Taylor,电子工业出版社的。然后把书本后面的那个SMO算法实现就基本上弄懂了SVM是怎么一回事,最后再编写一个SVM库出来,比方说像libsvm等工具使用,呵呵,差点儿相同就这样。这些是我学习SVM的整个过程,也算是经验吧。

以下是SVM的简化版SMO算法,我将结合Java代码来解释一下整个SVM的学习训练过程,即所谓的train训练过程。那么什么是SMO算法呢?

SMO算法的目的无非是找出一个函数f(x),这个函数能让我们把输入的数据x进行分类。既然是分类肯定须要一个评判的标准,比方分出来有两种情况A和B,那么怎么样才干说x是属于A类的,或不是B类的呢?就是须要有个边界,就好像两个国家一样有边界,假设边界越明显,则就越easy区分,因此,我们的目标是最大化边界的宽度,使得很easy的区分是A类还是B类。

在SVM中,要最大化边界则须要最小化这个数值:

0_1296533058YAB6.gif

w:是參量,值越大边界越明显

C代表惩处系数,即假设某个x是属于某一类,可是它偏离了该类,跑到边界上后者其它类的地方去了,C越大表明越不想放弃这个点,边界就会缩小

0_129653315199Gr.gif代表:松散变量

但问题似乎还不好解,又由于SVM是一个凸二次规划问题,凸二次规划问题有最优解,于是问题转换成下列形式(KKT条件):

0_1296533215r21e.gif…………(1)

这里的ai是拉格朗日乘子(问题通过拉格朗日乘法数来求解)

对于(a)的情况,表明ai是正常分类,在边界内部(我们知道正确分类的点yi*f(xi)>=0)

对于(b)的情况,表明了ai是支持向量,在边界上

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值