Factorization Machines,为什么会出现这个东西?
(1)、在推荐系统中,数据矩阵往往是十分稀疏的,而原本分类任务中最强的单模型——SVM又对高维稀疏的数据十分的不敏感,无法找到一个好的分割超平面。
(2)、推荐系统中有诸多基于内容的推荐算法、协同过滤等算法框架,但是一般某个业务的模型不具备一般化能力,不能拿到别的业务中使用。
基于以上两点,FM出现了,我觉着它有以下特点:
(1)首先,与SVM不同的是,它不适用kernel,而是将参数矩阵进行分解,用sparse的数据来训练分解后的向量,还是可以的。
(2)、FM做到了与多项式回归类似的事情,但是它通过分解矩阵将问题的复杂度降到线性级别。
(3)、如MF、SVD++等算法一样,可以套用在其他的问题上。
FM长什么样子?
最开始,它是这样的:
只看这个式子前两项,就是一个线性回归公式,而第三项就是关键,显而易见,它描述了两个特征之间的关系,当然这里是degree=2的情况,也可以有三个特征的关系描述、四个……毕竟Factorization Machines,是带s的。
式子提出来了,问题也来了,十分稀疏的data无法训练svm,那这个wij能训练出来吗?好像是不太能。
FM核心思想
通过将wij分解成一个向量V和它的转置VT的点积,用这两个类似于SVD中隐向量的概念来表示,这样需要训练的就是这个v了。(写着写着懵了,求解释,怎么v就好训练了……)
然后就成了这个样子:,<vi,vj>代表的是向量内积。
这个时候会发现式子的复杂度是O(kn^2).因为。
FM paper的作者用了一些等式转换,将这个式子降低到了O(kn).