在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
本文由Tracholar授权发布,未经允许,请勿转载。 在组内做过一次因子机的技术分享,这里将内容以及自己的思考记录如下。
综述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) ;而对于二分类问题,需要做对数几率函数变换( 逻辑回归 )
多项式模型的问题在于二阶项的参数过多,设特征维数为 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), 基于一个基本的观察,齐二次交叉项之和可以表达为平方和之差 上式左边计算复杂度为O(n2),而右边是O(n)。根据上式,可以将原表达式中二次项化简为 上式计算时间复杂度是O(n)。 基于梯度的优化都需要计算目标函数对参数的梯度,对FM而言,目标函数对参数的梯度可以利用链式求导法则分解为目标函数对φ的梯度和的乘积。前者依赖于具体任务,后者可以简单的求得 优化方案论文[2]中给出了三种优化方案,它们分别是
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。
FM与矩阵分解基于矩阵分解的协同过滤是推荐系统中常用的一种推荐方案[7],从历史数据中收集user对item的评分,可以是显式的打分,也可以是用户的隐式反馈计算的得分。由于user和item数量非常多,有过打分的user和item对通常是十分稀少的,基于矩阵分解的协同过滤是来预测那些没有过行为的user对item的打分,实际上是一个评分预测问题。矩阵分解的方法假设user对item的打分由下式决定 其中qi是第i个item对相应的隐向量,pu是第u个user对应的隐向量,bi代表item的偏置,用于解释商品本身的热门和冷门,bu代表user的偏置,用于解释用户本身的打分偏好(例如有些人喜欢打低分),μ是常数。即将评分矩阵分解为user矩阵和item矩阵的乘积加上线性项和常数项,而这两个矩阵是低秩的!这些参数通过对最小化经验误差得到。 从上面的叙述来看,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了! FM与决策树FM和决策树都可以做特征组合,Facebook就用GBDT学习特征的自动组合[8],决策树可以非常方便地对特征做高阶组合。如图所示,一棵决策的叶子节点实际上就对应一条特征规则,例如最左边的叶子节点就代表一条特征组合规则x1=1, x2=1。通过增加树的深度,可以很方便的学习到更高级的非线性组合模式。通过增加树的棵树,可以学习到很多这样的模式,论文[8]采用GBDT来建立决策树,使得新增的决策树能够拟合损失函数的残差。 但是, 决策树和二项式模型有一个共同的问题,那就是无法学习到数据中不存在的模式 。例如,对于模式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),一起预测 参考文献
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13