什么是FM算法
FM算法也叫因子分解机,是基于线性回归模型得来的,在线性回归模型中,我们有:
而FM算法的式子是这样的:
可以看到FM算法是在线性回归的基础上,加上了对特征两两组合的项。
为什么有FM算法
在使用线性回归或逻辑回归处理实际问题时,预测结果与特征之间往往不是线性的,这需要我们引入一些非线性的机制。SVM可以通过核函数来处理非线性问题,使用核函数处理非线性问题的本质是引入特征组合,将特征维度从低维空间转向高维空间。所以可以使用特征组合升维的思想,对两两特征进行组合,得到FM算法。
如何求解
在FM算法中,$w_{ij}$是由两个向量得到的,即$v_i$和$v_j$,由这两个向量的内积得到,所以FM算法的式子可以表示为:
将公示化简到这种形式,可以将得到$y$的计算复杂度从$O(kn^2)$下降到$O(kn)$,这也意味着求$y$关于$w_i$和$v_{ik}$的导数的计算复杂度也会得到优化。在求解FM算法的参数时,使用梯度下降法求目标函数关于$w_i$和$v_{ik}$的导数,根据导数去更新$w_i$和$v_{ik}$的值,直到收敛达到极值。
优缺点
FM算法只是对特征进行简单的两两组合,对于更多特征的组合则无能为力,这是一个缺点。但FM算法比起普通的线性回归或逻辑回归,在处理非线性问题时效果更好。