当前位置: 首页>>机器学习>>正文


因子机深入解析[推荐]

 

本文由Tracholar授权发布,未经允许,请勿转载。

在组内做过一次因子机的技术分享,这里将内容以及自己的思考记录如下。

  • 综述
  • 什么是因子机
  • FM与矩阵分解
  • FM与决策树
  • FM与神经网络

综述

2010年,日本大阪大学(Osaka University)的 Steffen Rendle 在矩阵分解(MF)、SVD++[2]、PITF[3]、FPMC[4] 等基础之上,归纳出针对高维稀疏数据的因子机(Factorization Machine, FM)模型[11]。因子机模型可以将上述模型全部纳入一个统一的框架进行分析。并且,Steffen Rendle 实现了一个单机多线程版本的 libFM 。在随后的 KDD Cup 2012,track2 广告点击率预估(pCTR) 中,国立台湾大学[4]和 Opera Solutions[5] 两只队伍都采用了 FM,并获得大赛的冠亚军而使得 FM 名声大噪。随后,台湾大学的 Yuchin Juan 等人在总结自己在两次比赛中的经验以及 Opera Solutions 队伍中使用的 FM 模型的总结,提出了一般化的 FFM 模型[6],并实现了单机多线程版的 libFFM ,并做了深入的试验研究。事实上,Opera Solutions 在比赛中用的 FM 就是FFM。

将 FM 向更高阶推广的工作也有一些,例如 Steffen Rendle 在论文[11]中提出一般化的 d-way FM,他将二阶组合的FM中的二阶项替换成d阶组合项,可以利用 FM 相同的处理技巧将计算时间复杂度降低为线性时间复杂度。这个模型的缺点在于只考虑d阶组合,而实际上,低阶组合模式更有意义,因此到目前为止也没有看到谁在实际中使用。针对这种不足,2016年日本NTT通信科学实验室的 Mathieu Blondel 等人在NIPS2016上提出了一般意义上的高阶 FM 模型,它保留了所有高阶项,并利用 ANOVA kernel 和动态规划算法,将计算时间复杂度降低到线性时间复杂度[12]!

什么是因子机

因子机的定义

机器学习中的建模问题可以归纳为从数据中学习一个函数 f: Rn → T,它将实值的特征向量 x ∈ Rn 映射到一个特定的集合中。例如,对于回归问题,集合 T 就是实数集 R,对于二分类问题,这个集合可以是{+1, -1}. 对于监督学习,通常有一标注的训练样本集合 D = {(x(1),y(1)),…, (x(n),y(n))}。

线性函数是最简单的建模函数,它假定这个函数可以用参数 w 来刻画 ,

对于回归问题,y = φ(x) ;而对于二分类问题,需要做对数几率函数变换( 逻辑回归 )

线性模型的缺点是无法学到模型之间的交互,而这在推荐和CTR预估中是比较关键的。例如,CTR预估中常将用户id和广告id onehot 编码后作为特征向量的一部分。 为了学习特征间的交叉,SVM通过多项式核函数来实现特征的交叉,实际上和多项式模型是一样的,这里以二阶多项式模型为例

 

多项式模型的问题在于二阶项的参数过多,设特征维数为 n,那么二阶项的参数数目为n(n+1)/2。 对于广告点击率预估问题,由于存在大量id特征,导致 n 可能为 107维,这样一来,模型参数的量级为 1014,这比样本量 4 x 107多得多[6]!这导致只有极少数的二阶组合模式才能在样本中找到, 而绝大多数模式在样本中找不到,因而模型无法学出对应的权重。例如,对于某个wij,样本中找不到xi=1,xj=1 (这里假定所有的特征都是离散的特征,只取0和1两个值)这种样本,那么wij的梯度恒为0,从而导致参数学习失败!

很容易想到,可以对二阶项参数施加某种限制,减少模型参数的自由度。FM 施加的限制是要求二阶项系数矩阵是低秩的,能够分解为低秩矩阵的乘积

这样一来,就将参数个数减少到 kn,可以设置较少的k值(一般设置在100以内,k << n),极大地减少模型参数,增强模型泛化能力,这跟矩阵分解的方法是一样的。向量 vi 可以解释为第i个特征对应的隐因子或隐向量。 以user和item的推荐问题为例,如果该特征是user,可以解释为用户向量,如果是item,可以解释为物品向量。

计算复杂度

因为引入和二阶项,如果直接计算,时间复杂度将是O(n2),
n是特征非零特征数目, 可以通过简单的数学技巧将时间复杂度减少到线性时间复杂度。

基于一个基本的观察,齐二次交叉项之和可以表达为平方和之差

上式左边计算复杂度为O(n2),而右边是O(n)。根据上式,可以将原表达式中二次项化简为

上式计算时间复杂度是O(n)。

基于梯度的优化都需要计算目标函数对参数的梯度,对FM而言,目标函数对参数的梯度可以利用链式求导法则分解为目标函数对φ的梯度和的乘积。前者依赖于具体任务,后者可以简单的求得

优化方案

论文[2]中给出了三种优化方案,它们分别是

  1. 随机梯度下降,这种方案收敛慢而且非常敏感,可以利用现代的一些trick,例如采用 AdaGrad 算法,采用自适应学习率,效果相对比较好,论文[6]对FFM就采用这种方案。
  2. 交替方向乘子(ALS),这种方案只适用于回归问题,它每次优化一个参数,把其他参数固定,好处是每次都是一个最小二乘问题,有解析解。
  3. 基于蒙特卡罗马尔科夫链的优化方案,论文中效果最好的方案,细节可以参考原文。

FFM

在实际预测任务中,特征往往包含多种id,如果不同id组合时采用不同的隐向量,那么这就是 FFM(Field Factorization Machine) 模型[6]。它将特征按照事先的规则分为多个场(Field),特征 xi属于某个特定的场f。每个特征将被映射为多个隐向量vi1,…,vif,每个隐向量对应一个场。当两个特征xi,xj组合时,用对方对应的场对应的隐向量做内积!

fi,fj分别是特征xi,xj对应的场编号。FFM 由于引入了场,使得每两组特征交叉的隐向量都是独立的,可以取得更好的组合效果,但是使得计算复杂度无法通过优化变成线性时间复杂度,每个样本预测的时间复杂度为 O(n2 k),不过FFM的k值通常远小于FM的k值。论文[6]对FFM在Criteo和Avazu两个任务(Kaggle上的两个CTR预估比赛)上进行了试验,结果表明 FFM 的成绩优于 FM。事实上,FM 可以看做只有一个场的 FFM。

ffm.png ffm2.png

FM与矩阵分解

mfcf

基于矩阵分解的协同过滤是推荐系统中常用的一种推荐方案[7],从历史数据中收集user对item的评分,可以是显式的打分,也可以是用户的隐式反馈计算的得分。由于user和item数量非常多,有过打分的user和item对通常是十分稀少的,基于矩阵分解的协同过滤是来预测那些没有过行为的user对item的打分,实际上是一个评分预测问题。矩阵分解的方法假设user对item的打分由下式决定

其中qi是第i个item对相应的隐向量,pu是第u个user对应的隐向量,bi代表item的偏置,用于解释商品本身的热门和冷门,bu代表user的偏置,用于解释用户本身的打分偏好(例如有些人喜欢打低分),μ是常数。即将评分矩阵分解为user矩阵和item矩阵的乘积加上线性项和常数项,而这两个矩阵是低秩的!这些参数通过对最小化经验误差得到。

mf-fm

从上面的叙述来看,FM的二阶矩阵也用了矩阵分解的技巧,那么基于矩阵分解的协同过滤和FM是什么关系呢?以user对item评分预测问题为例,基于矩阵分解的协同过滤可以看做FM的一个特殊例子,对于每一个样本,FM可以看做特征只有userid和itemid的onehot编码后的向量连接而成的向量。从FM和MFCF公式来看,MFCF的用户向量pu和item向量qi可以看做FM中的隐向量,用户和item的bias向量bu, bi就是FM中的一次项系数,常数μ也和FM中的常数w0相对应,可以看到, MFCF就是FM的一个特例 !另外,FM可以采用更多的特征,学习更多的组合模式,这是单个矩阵分解的模型所做不到的!因此,FM比矩阵分解的方法更具普遍性!事实上,现在能用矩阵分解的方法做的方案都直接上FM了!

mf-fm

FM与决策树

FM和决策树都可以做特征组合,Facebook就用GBDT学习特征的自动组合[8],决策树可以非常方便地对特征做高阶组合。如图所示,一棵决策的叶子节点实际上就对应一条特征规则,例如最左边的叶子节点就代表一条特征组合规则x1=1, x2=1。通过增加树的深度,可以很方便的学习到更高级的非线性组合模式。通过增加树的棵树,可以学习到很多这样的模式,论文[8]采用GBDT来建立决策树,使得新增的决策树能够拟合损失函数的残差。

dt-fm

但是, 决策树和二项式模型有一个共同的问题,那就是无法学习到数据中不存在的模式 。例如,对于模式x1=1, x2=1,如果这种模式在数据中不存在,或者数量特别少,那么决策树在对特征x1分裂后,就不会再对x2分裂了。当数据不是高度稀疏的,特征间的组合模式基本上都能够找到足够的样本,那么决策树能够有效地学习到比较复杂的特征组合;但是在高度稀疏的数据中,二阶组合的数量就足以让绝大多数模式找不到样本,这使得决策树无法学到这些简单的二阶模式,更不用说更高阶的组合了。

FM与神经网络

神经网络天然地难以直接处理高维稀疏的离散特征,因为这将导致神经元的连接参数太多。但是低维嵌入(embedding)技巧可以解决这个问题,词的分布式表达就是一个很好的例子。事实上 FM就可以看做对高维稀疏的离散特征做 embedding 。上面举的例子其实也可以看做将每一个user和每一个item嵌入到一个低维连续的 embedding 空间中,然后在这个 embedding 空间中比较用户和item的相似性来学习到用户对item的偏好。这跟 word2vec[9]词向量学习类似,word2vec 将词 embedding 到一个低维连续空间,词的相似性通过两个词向量的相似性来度量。神经网络对稀疏离散特征做 embedding 后,可以做更复杂的非线性变换,具有比FM跟大的潜力学习到更深层的非线性关系!基于这个思想,2016年,Google提出 wide and deep 模型用作 Google Play的app推荐[10],它利用神经网络做离散特征和连续特征之间的交叉,神经网络的输出和人工组合较低维度的离散特征一起预测,并且采用端到端的学习,联合优化DNN和LR。如图所示,Catergorial 特征 embedding 到低维连续空间,并和连续特征拼接,构成了1200维的向量,作为神经网络的输入,神经网络采用三隐层结构,激活函数都是采用 ReLU,最后一层神经元的输出 a(lf)和离散特征 x 及人工叉积变换后的特征 φ(x),一起预测

nn-fm

参考文献

  1. Y. Koren, “Factorization meets the neighborhood: a multifaceted collabo- rative filtering model,” in KDD ’08: Proceeding of the 14th ACM SIGKDD international conference on Knowledge discovery and data mining. New York, NY, USA: ACM, 2008, pp. 426–434.
  2. S. Rendle and L. Schmidt-Thieme, “Pairwise interaction tensor factorization for personalized tag recommendation,” in WSDM ’10: Proceedings of the third ACM international conference on Web search and data mining. New York, NY, USA: ACM, 2010, pp. 81–90.
  3. S. Rendle, C. Freudenthaler, and L. Schmidt-Thieme, “Factorizing personalized markov chains for next-basket recommendation,” in WWW ’10: Proceedings of the 19th international conference on World wide web. New York, NY, USA: ACM, 2010, pp. 811–820.
  4. A two-stage ensemble of diverse models for advertisement ranking in KDD Cup 2012[C]//KDDCup. 2012.
  5. Jahrer M, Toscher A, Lee J Y, et al. Ensemble of collaborative filtering and feature engineered models for click through rate prediction[C]//KDDCup Workshop. 2012.
  6. Juan Y, Zhuang Y, Chin W, et al. Field-aware Factorization Machines for CTR Prediction[C]. conference on recommender systems, 2016: 43-50.
  7. Koren Y, Bell R M, Volinsky C, et al. Matrix Factorization Techniques for Recommender Systems[J]. IEEE Computer, 2009, 42(8): 30-37.
  8. He X, Pan J, Jin O, et al. Practical Lessons from Predicting Clicks on Ads at Facebook[C]. knowledge discovery and data mining, 2014: 1-9.
  9. Mikolov T, Sutskever I, Chen K, et al. Distributed representations of words and phrases and their compositionality[C]. neural information processing systems, 2013: 3111-3119.
  10. Cheng H T, Koc L, Harmsen J, et al. Wide & Deep Learning for Recommender Systems[C]// The Workshop on Deep Learning for Recommender Systems. ACM, 2016:7-10.
  11. Rendle S. Factorization Machines[C]. international conference on data mining, 2010.
  12. Blondel M, Fujino A, Ueda N, et al. Higher-Order Factorization Machines[C]. neural information processing systems, 2016: 3351-3359.

 

本文由《纯净天空》出品。文章地址: https://vimsky.com/article/1934.html,未经允许,请勿转载。