深入浅出FM和类似推荐算法

最近在实现Matrix Factorization的时候看到了Factorization Machine一系列算法,立刻被他和各种推荐模型的关联性吸引了,于是做了一些研究,总结一下。 前言 Factorization Machine (以下简称FM) 是由Steffen Rendle在2010年提出的,模型主要通过特征组合来解决大规模稀疏数据的分类问题。 这些年,由于深度学习的再一次兴起,人们将FM和深度学习产生特征联合到一起,在不同公司举办的CTR预估比赛中取得了非常好的成绩,表现尤为突出。2016年的LambdaFM和2017年的Field-aware FM则分别是推荐系统和CTR预估领域的经典做法。 什么是Factorization Machine 在面对CTR预估的问题的时候,我们常常会转化为下面这种类型的二分类问题,由于User,Country,以及内容等特征都是categorical类型,所以在使用的时候常常采用One-Hot Encoding将其转化为数值类型。 由上图可以看出,在经过One-Hot编码变换之后,每个样本的特征空间都变大了许多,特征矩阵变得非常稀疏,在现实生活中我们常常可以看见超过10⁷维数的特征向量。 其次,如果我们采用单一的线性模型来学习用户的点击,打分习惯,我们很容易忽略特征中潜在的组合关系,比方说“男性用户”喜欢看“漫威电影”,买“奶粉”的用户也常常买“尿不湿”等等。为了学习这样的交叉特征,SVM率先引入了核的概念: 然而传统的SVM算法在面对稀疏特征的时候,对10⁷维度数据生成了10¹⁴参数,由于数据量有限,导致大部分参数学习失败。这时候FM就登场了,他通过对二阶参数加以限制,减少模型的自由度,分解为两个低秩矩阵乘积。 通过下面的这个表达试可以看出,FM很像是计算每一个经过One-Hot Encoding变化的特征的Embedding,然后学习不同特征之间Embedding相似度对于最后预测结果的影响。由于我们可以将上千万维的稀疏向量压缩为几十,或者几百维的Embedding,极大地减小了模型的参数数量级,从而增强模型的泛化能力,得到更好的预测结果。 Field Factorization Machine 如果简单的考虑用户和推荐内容,我们可以把FM抽象成更简单的形式,通过学习整体平台的bias,每个用户的user bias,每个推荐内容的item

Read more