首页 > 其他分享 >【推荐系统】POLY2、FM、FFM模型的进化之路

【推荐系统】POLY2、FM、FFM模型的进化之路

时间:2023-01-17 10:07:57浏览次数:30  
标签:权重 训练 特征 POLY2 模型 FFM FM 向量


文章目录

  • ​​POLY2模型​​
  • ​​FM模型​​
  • ​​FFM模型​​

POLY2模型

逻辑回归模型是CTR预测领域较为广泛使用的模型,原因有模型具备可解释性,良好的数学解释性,可以实现并行化提高效率,但是它有个缺点就是不能够捕捉数据的非线性关系,如果非要这样,一般情况下需要人工进行特征交叉,但是这样的成本较大,而且需要有经验的算法专家才能够交叉出好的特征,所以如果可以使用算法进行交叉,那么整个系统的工作效率将大大提高。

所以,这时产生了POLY2模型进行特征的 “暴力” 组合,它的原理很简单,就是将任意两个特征两两交叉,这将会新产生 【推荐系统】POLY2、FM、FFM模型的进化之路_数据 个新的组合特征,这是我们的模型预测公式将会变为:
【推荐系统】POLY2、FM、FFM模型的进化之路_推荐系统_02
这个模型之后的工作将是学习各个交叉特征的权重,这在一定程度上解决了特征组合的问题,但POLY2模型本质上仍是线性模型,其训练方法与逻辑回归没有什么区别。

但是这个模型也会有两个缺点:

  • 由于CTR领域的数据一般为稀疏矩阵,存在很多用户和物品没有交互的项,这将会导致这个组合特征的权重无法进行训练,原因是训练集中无数据,导致大部分交叉特征的权重缺乏有效的数据进行训练(原因是训练参数需要对参数进行求导,然后采用梯度下降更新参数,但是那些无交互的特征,由于矩阵中的值全为0,导致对这些参数求导得到的导数为0,导致参数无法训练)
  • 权重的参数的数量由 【推荐系统】POLY2、FM、FFM模型的进化之路_数据_03 直接上升到 【推荐系统】POLY2、FM、FFM模型的进化之路_人工智能_04

FM模型

为了解决矩阵稀疏的问题,2010年,Rendle提出了FM模型,它的思想就是对每个特征训练一个隐向量,然后将POLY2中交叉特征的权重替换为这两个特征隐向量的内积,公式为:
【推荐系统】POLY2、FM、FFM模型的进化之路_权重_05
举个例子吧,现在有年龄、爱好、性别三个特征,如果我们使用POLY2,当我们计算年龄-爱好这个新特征的权重时,模型会对其进行求导然后计算这个组个特征的权重,然而FM是会分别对这三个特征列训练一个隐向量,比如我们隐向量是5维,那么当我们计算年龄-爱好这个组合特征的权重时,我们此时只需要将年龄和爱好两个特征对应的隐向量做内积操作,然后将得到的结果作为这个组合特征的权重。

这样做的好处就是能够有效的训练模型参数,即使对于那些为观测到的数据也可以进行参数训练,比如对于【年龄:20,爱好:歌曲】这个特征可能在训练数据中没有,那么如果采用POLY2的方式肯定是无法进行训练的,因为缺少相关数据,但是使用FM他就可以解决这个问题,尽管没有这个数据,但是我们可以使用【年龄:20,性别:男】这个数据进行训练年龄这列的隐向量,然后使用训练好的隐向量在和爱好的隐向量做内积就可以得到年龄和爱好的权重。

POLY2各个交叉特征权重之间是独立的,而FM训练的隐向量相互之间是依赖的,当我们缺乏年龄-爱好这个数据时,可以使用年龄-性别这个数据进行训练年龄的隐向量,其余同理,这就导致各个特征的隐向量都可以训练,而且是相互依赖的。

FM优点:

  • FM引入隐向量的做法,与矩阵分解用隐向量代表用户和物品的做法异曲同工
  • 通过引入隐向量,把POLY2模型 【推荐系统】POLY2、FM、FFM模型的进化之路_人工智能_04 级别的权重参数数量减少到了 【推荐系统】POLY2、FM、FFM模型的进化之路_机器学习_07

FFM模型

2015年,基于FM提出的FFM在多项CTR预估大赛中夺魁,FFM模型的全称为 Field-aware Factorization Machines。

它的特殊之处在于他引入了特征域的概念,使得模型的表达能力更强,公式如下:
【推荐系统】POLY2、FM、FFM模型的进化之路_数据_08
这个公式和FM的几乎是一样的,只不过是它的权重有所不同,FM的权重是各个特征的隐向量做内积得到的,FFM的权重也是隐向量做内积得到的,但是他和FM不同,FM只为每个特征列训练一个隐向量,而FFM是为每个特征列训练 【推荐系统】POLY2、FM、FFM模型的进化之路_权重_09 个隐向量,其中 【推荐系统】POLY2、FM、FFM模型的进化之路_权重_09

其中特征与可以理解为它将所有的特征进行分类,将一些特征分到一类中,这个类就叫做特征域,引入它的目的是提高模型的表达能力,比如不同的特征之间可能不同,这就需要不同种类的特征相互独立的进行训练隐向量权重,比如现在我们的特征有用户、物品、其它大类,如果是用户类的特征与物品类中的特征做交叉,那么我们就需要使用用户域对物品域的隐向量,如果是用户对其它,那么就使用用户域对其它的隐向量,每个特征都会训练3个隐向量,分别用于与自己同域的特征做交叉,另外两个分别用户和另外两个域的特征做交叉,如果是FM,不需要考虑域,只是将任何两个交叉特征的隐向量做内积,FFM会为每个特征多训练几个隐向量,分别用户与不同种类的向量做交叉,这大大提高了模型的表达能力,从参数上讲这是肯定的,因为模型参数变多了,那么模型能够表达的数据容量也就更大了。

FFM优点:

  • 通过引入特征域的概念,为每个特征训练不同的隐向量,分别用于与不同种类的特征做交叉,提高了模型的表达能力
  • 在有 【推荐系统】POLY2、FM、FFM模型的进化之路_数据_03 个特征, 【推荐系统】POLY2、FM、FFM模型的进化之路_权重_12 个特征域,隐向量维度为 【推荐系统】POLY2、FM、FFM模型的进化之路_人工智能_13 ,模型权重的参数变为 【推荐系统】POLY2、FM、FFM模型的进化之路_推荐系统_14


标签:权重,训练,特征,POLY2,模型,FFM,FM,向量
From: https://blog.51cto.com/u_15834745/6011912

相关文章