一、理论

I、 前深度学习时代

一、Logistic Regression,LR

1. 逻辑回归的数学基础

逻辑回归作为广义线性模型的一种,假设 CTR预估模型演进笔记_算法

  • 其概率质量函数为:
    CTR预估模型演进笔记_广告_02

在点击率预估这个问题上,“点击”这个事件是否发生,就是模型的因变量 CTR预估模型演进笔记_算法
CTR预估模型演进笔记_机器学习_04

CTR预估模型演进笔记_深度学习_05

其中 Sigmoid 函数如下图所示:

CTR预估模型演进笔记_算法_06

其中, CTR预估模型演进笔记_深度学习_07 是输入向量,CTR预估模型演进笔记_CTR_08 是需要学习的参数。对于CTR模型而言,CTR预估模型演进笔记_深度学习_07 就是输入的特征,CTR预估模型演进笔记_深度学习_10

2. 逻辑回归的可解释性

直观而言,逻辑回归就是将各个特征加权求和,而后加上 Sigmoid 函数。各个权重 CTR预估模型演进笔记_深度学习_11

所以逻辑回归具有极强的可解释性,可以解释哪些特征比较重要,哪些比较次要,在CTR预估出现偏差的时候,能够找到影响结果的因素。

3. 工程化的需要

在GPU还未流行之时,LR 具有并行化、模型简单、训练开销小等特点。

二、POLY2——特征交叉的开始

由于LR仅仅使用了单一的特征,没有学到特征之间的联系。

比如“男性”和“体育用品”之间的联系更大,“女性”和“时尚用品”的联系更大。因此需要关注特征之间的交叉特征。最开始的时候,工程师使用手动组合特征的方法,但是人工经验是有局限性的。POLY2 采用了对特征进行 二阶 的 “暴力”组合:

CTR预估模型演进笔记_机器学习_12

在上面的POLY2的二阶部分的目标函数中(上式省略了一阶部分和sigmoid函数的部分),可以看到其对所有特征都进行了两两交叉,并对所有特征的组合,都赋予了新的权重 CTR预估模型演进笔记_CTR_13

POLY2 通过暴力组合特征在一定程度上解决了特征组合的问题。而且由于本质上仍然是线性模型,训练方法和 LR 并无区别,便于工程上的兼容。

缺点:

1、 互联网数据的特征用 one-hot 表达时,往往有千万甚至亿级别的维度,特征非常稀疏(就是one-hot 向量中仅有少数元素是 1,其余均为 0)。POLY2 进行无选择的特征交叉会使得交叉特征更加稀疏,使得大部分交叉特征的权重缺失,导致无法收敛。

关于此结论,是由于 LR 的更新公式中,CTR预估模型演进笔记_CTR_14,(这里的 CTR预估模型演进笔记_深度学习_15 等价于 特征交叉项 CTR预估模型演进笔记_机器学习_16)。可见,参数的更新和这个参数组合项的值直接相关。当这里的 CTR预估模型演进笔记_CTR_17 取值为0时,参数 CTR预估模型演进笔记_深度学习_11这里的 CTR预估模型演进笔记_机器学习_19 等价于 特征交叉项 的参数CTR预估模型演进笔记_算法_20)就无法得到更新,而 CTR预估模型演进笔记_CTR_17 要非零就要求交叉特征的两项 CTR预估模型演进笔记_算法_22CTR预估模型演进笔记_广告_23 都要非零,但实际在数据高度稀疏,一旦两个特征只要有一个取 0,参数 CTR预估模型演进笔记_深度学习_11

除此之外,对于训练集中没有出现的交叉特征,也没办法学习这类权重,泛化性能不够好。

比如:某一项 CTR预估模型演进笔记_算法_25 中,CTR预估模型演进笔记_CTR_26CTR预估模型演进笔记_算法_27, 这样乘起来以后,整项都变成了 0 ,那么权重参数 CTR预估模型演进笔记_CTR_13

2、 由上述公式,再加上一阶部分,总的权重参数的数量 CTR预估模型演进笔记_算法_29,增加了训练的复杂度

三、FM——隐向量特征交叉

为了解决 POLY2 模型的缺点,2020年德国的 Steffen Rendle 提出了FM (Factorization Machine)。 FM的公式包含了一阶线性部分与二阶特征交叉部分:

CTR预估模型演进笔记_CTR_30

在这里,将上面POLY2的 特征交叉项的权重参数 CTR预估模型演进笔记_CTR_13 分解为了两个隐向量 CTR预估模型演进笔记_广告_32CTR预估模型演进笔记_机器学习_33 的内积,CTR预估模型演进笔记_机器学习_34。也就是说,每个特征 CTR预估模型演进笔记_CTR_17 除了需要训练一个一阶的权重参数 CTR预估模型演进笔记_深度学习_11,还需要额外训练一个隐向量 CTR预估模型演进笔记_广告_32,这个向量长度为 CTR预估模型演进笔记_深度学习_38

CTR预估模型演进笔记_广告_32 是第 CTR预估模型演进笔记_CTR_40 维特征的隐向量,长度 CTR预估模型演进笔记_机器学习_41,包含 CTR预估模型演进笔记_深度学习_38 个描述特征的因子。在交叉项中,共 CTR预估模型演进笔记_算法_43 个特征,每个特征有一个隐向量,每个向量长度为 CTR预估模型演进笔记_深度学习_38,所以交叉部分参数个数为 CTR预估模型演进笔记_广告_45

优点:

1. 打破了交叉特征权重间的隔离性

通过将特征隐射到 CTR预估模型演进笔记_深度学习_38

例如,假设我们有交叉特征 gender=male & movie_genre=war,我们需要估计这个交叉特征前的参数 CTR预估模型演进笔记_深度学习_47,FM通过将 CTR预估模型演进笔记_深度学习_47分解为 CTR预估模型演进笔记_广告_49的方式进行估计,那么对于每次更新male或者war的隐向量 CTR预估模型演进笔记_算法_50

2. 隐向量的引入还使得FM比POLY2能够更好的解决数据稀疏性的问题 & 提高泛化能力

举例来说,我们有两个特征,分别是channel和brand,一个训练样本的feature组合是(ESPN, Adidas),在POLY2中,只有当ESPN和Adidas同时出现在一个训练样本中时,模型才能学到这个组合特征对应的权重。而在FM中,ESPN的隐向量也可以通过(ESPN, Gucci)这个样本学到,Adidas的隐向量也可以通过(NBC, Adidas)学到,这大大降低了模型对于数据稀疏性的要求。甚至对于一个从未出现过的特征组合(NBC, Gucci),由于模型之前已经分别学习过NBC和Gucci的隐向量,FM也具备了计算该特征组合权重的能力,这是POLY2无法实现的。也许FM相比POLY2丢失了某些信息的记忆能力,但是泛化能力大大提高,这对于互联网的数据特点是非常重要的。

3. 参数数量降低

CTR预估模型演进笔记_深度学习_51

缺点:

2-way的FM仅枚举了所有特征的二阶交叉信息,没有考虑高阶特征的信息

四、FFM——引入特征域概念

FFM(Field-aware Factorization Machine)是Yuchin Juan等人在2015年的比赛中提出的一种对FM改进算法,主要是引入了field概念,即认为每个feature对于不同field的交叉都有不同的特征表达。FFM相比于FM的计算时间复杂度更高,但同时也提高了本身模型的表达能力。FM也可以看成只有一个field的FFM

CTR预估模型演进笔记_深度学习_52

上式是FFM的目标函数的二阶部分。其与 FM 目标函数的区别在于隐向量由原先的 CTR预估模型演进笔记_CTR_53 变成了 CTR预估模型演进笔记_CTR_54 ,这意味着,每个特征不仅仅对应一个隐向量,而是对应着一组隐向量,这个组的大小,等于域 CTR预估模型演进笔记_算法_55 的数量。当 CTR预估模型演进笔记_机器学习_56 与特征 CTR预估模型演进笔记_广告_23 进行交叉时, CTR预估模型演进笔记_机器学习_56 特征会从一组隐向量中挑出与特征 CTR预估模型演进笔记_广告_23 的域 CTR预估模型演进笔记_CTR_60 相对应的隐向量 CTR预估模型演进笔记_CTR_54 进行交叉。同理,特征 CTR预估模型演进笔记_广告_23 也会用与 CTR预估模型演进笔记_机器学习_56 的域 CTR预估模型演进笔记_机器学习_64

这里的“域” 代表特征域,域内的特征一般采用 one-hot 编码。

FFM 模型学习每个特征在 CTR预估模型演进笔记_算法_55 个域上的 CTR预估模型演进笔记_深度学习_38 维隐向量,交叉特征的权重由特征在对方特征域上的隐向量内积得到,权重数量共 CTR预估模型演进笔记_广告_67 个。在训练方面,由于FFM的二次项并不能够像FM那样简化,因此其复杂度为 CTR预估模型演进笔记_深度学习_68

相比FM,FFM由于引入了field这一概念,为模型引入了更多有价值信息,使模型表达能力更强,但与此同时,FFM的计算复杂度上升到 CTR预估模型演进笔记_深度学习_68,远远大于FM的 CTR预估模型演进笔记_广告_45

CTR模型特征交叉方向的演化

以上模型实际上是CTR模型朝着特征交叉的方向演化的过程,我们再用图示方法回顾一下从POLY2到FM,再到FFM进行特征交叉方法的不同。

  • POLY2模型直接学习每个交叉特征的权重,权重数量共CTR预估模型演进笔记_机器学习_71

CTR预估模型演进笔记_算法_72

  • FM模型学习每个特征的k维隐向量,交叉特征由相应特征隐向量的内积得到,权重数量共CTR预估模型演进笔记_广告_73个。
  • CTR预估模型演进笔记_广告_74

  • FFM模型引入了特征域这一概念,在做特征交叉时,每个特征选择与对方域对应的隐向量做内积运算得到交叉特征的权重。参数数量共CTR预估模型演进笔记_CTR_75个。
  • CTR预估模型演进笔记_机器学习_76

四、GBDT+LR——特征工程模型化的开端

​推荐系统遇上深度学习(十)–GBDT+LR融合方案实战​​​​前深度学习时代CTR预估模型的演化之路​

II、 深度学习时代

​谷歌、阿里、微软等10大深度学习CTR模型最全演化图谱【推荐、广告、搜索领域】​

​CTR预估模型发展过程与关系图谱​

二、代码实现

参考:

  1. ​CTR_Prediction​
  2. ​CTR预估算法之FM, FFM, DeepFM及实践​

参考:

  1. ​前深度学习时代CTR预估模型的演化之路​
  2. ​CTR预估模型发展过程与关系图谱​