我们之前已经推导出来支持向量机的数学公式,现在我们打算用SMO算法来进行求解,得到这个公式的最佳系数。
我这里先介绍这个算法的思想,介绍完思想后,我们再将思想套入进来。由于目标函数为凸函数(这里凸函数有兴趣的同学可以参考一下数学分析中的凸函数,凸函数等价于这个函数的导函数是单调递增的函数,深入的研究也很多性质,比如詹森不等式这样的)我们可以通过梯度的方法进行优化,但是目标函数是有条件限制的,所以,为了适应梯度个更新,我们更新时一次更新两个变量,我们先列出算法步骤,再一步步讲解这个算法。这里借用维基百科上一般步骤:
首先我们需要进行数学推导以上算法:
我们得到该推导式就可以用代码实现了(注该代码参考自机器学习实战,并参考自知乎文章https://zhuanlan.zhihu.com/p/29604517这里由于代码存在可读性比较差,这里略做修改):
领取专属 10元无门槛券
私享最新 技术干货