首先spark上的svm只能处理线性的,不能处理非线性的。其次spark上的svm求解过程与普通的不同。普通的是通过拉格朗日对偶,然后通过SMO方法求。但是在spark上,则没有通过拉格朗日,而是直接对损失函数利用随机梯度下降方法进行求解。
为啥spark上的svm没有非线性?因为非线性的那个是通过拉格朗日对偶,然后得到的表达式为一个xi.xj的内积形式,而kernel函数也刚好可以用k(x,z)=f(x)*f(z),所以通过对偶形式可以很方便的用核函数来表示。
所以上面就是的求解就不太容易了,所以一般都是用SMO进行求解。所以这也就是为啥spark没有用kernel的原因,spark求解都是对损失函数来的。不是通过拉格朗日对偶来的。
spark svm
原文:http://www.cnblogs.com/sunrye/p/6504892.html