首先spark上的svm只能处理线性的,不能处理非线性的。其次spark上的svm求解过程与普通的不同。普通的是通过拉格朗日对偶,然后通过SMO方法求。
但是在spark上,则没有通过拉格朗日,而是直接对损失函数利用随机梯度下降方法进行求解。
那么,svm的损失函数是啥?其实就是个合页函数+正则化。具体的会在<spark 损失函数>中讲解
为啥spark上的svm没有非线性?因为非线性的那个是通过拉格朗日对偶,然后得到的表达式为一个xi.xj的内积形式,而kernel函数也刚好可以用k(x,z)=f(x)*f(z),所以通过对偶形式可以很方便的用核函数来表示。

所以上面就是的求解就不太容易了,所以一般都是用SMO进行求解。所以这也就是为啥spark没有用kernel的原因,spark求解都是对损失函数来的。不是通过拉格朗日对偶来的。


posted on 2017-03-05 12:12  sunrye  阅读(575)  评论(0编辑  收藏  举报