目录
非常好的两篇介绍FM算法原理及应用的文章
分解机(Factorization Machines)推荐算法原理
现实世界中的大部分问题都是非线性关系(自变量和因变量不能表达成y=kx+b的形式),用机器学习的方法来处理预测任务时,需要使用非线性的模型来建模,非线性模型一般包括(树模型、深度学习模型等)。在工业界中,因线性模型的高效、简单、易扩展、容易解释等特点,从而获得了更广泛的应用,那么能不能找到一种方法使得线性模型表达非线性关系呢?一种简答易行的方式是使用特征工程中的特征交叉同时离散化特征取值,这样获取一种折线的近似非线性表达,如:工业界应用的LR等,但是这种手工做特征交叉的方式会耗费大量的人力,那么能不能找到一种从模型层面表达特征交叉的线性模型呢?答案是有的,这就是FM(Factorization Machines/因子分解机)。
其表达形式如下:
其中\(v_{i}\)为表达索引为i特征的一组隐向量,这种表达形式能够解决样本高稀疏数据带来的泛化能力差的缺点。
原式中表达特征交叉\(\sum_{i}^{n}\sum_{j=i+1}^{n} <v_{i},v_{j}> x_{i}x_{j}\)的部分时间复杂度为\(O(kn^{2})\),通过如下转换可以变成\(O(kn)\)
回归问题使用最小平方误差(least square error)作为损失函数
对于二分类,损失函数可取hinge loss函数,logit loss 函数,cross entropy 函数。