离散集合特征 categorical set:FM 对离散集合特征执行类似 one-hot 的形式,但是执行样本级别的归一化。 如,看过的历史电影。假设电影集合为:“速度激情9,战狼,泰囧,流浪地球”。如果一个人看过 “战狼,泰囧,流浪地球”, 则编码为(0,0.33333,0.33333,0.33333) 。
数值型特征 real valued:FM直接使用数值型特征,不做任何编码转换。
8.FM的优势:
给定特征 representation 向量的维度时,预测期间计算复杂度是线性的。
在交叉特征高度稀疏的情况下,参数仍然能够估计。 因为交叉特征的参数不仅仅依赖于这个交叉特征,还依赖于所有相关的交叉特征。这相当于增强了有效的学习数据。
能够泛化到未被观察到的交叉特征。 设交叉特征 “看过电影 A 且 年龄等于20” 从未在训练集中出现,但出现了 “看过电影 A”相关的交叉特征、以及 “年龄等于20”相关的交叉特征。 于是可以从这些交叉特征中分别学习 “看过电影 A” 的 representation 、“年龄等于20” 的 representation,最终泛化到这个未被观察到的交叉特征。
9.ALS优化算法
FM 的目标函数最优化可以直接采用随机梯度下降 SGD 算法求解,但是采用 SGD 有个严重的问题:需要选择一个合适的学习率。
学习率必须足够大,从而使得 SGD 能够尽快的收敛。学习率太小则收敛速度太慢。
学习率必须足够小,从而使得梯度下降的方向尽可能朝着极小值的方向。 由于 SGD 计算的梯度是真实梯度的估计值,引入了噪音。较大的学习率会放大噪音的影响,使得前进的方向不再是极小值的方向。
论文提出了一种新的交替最小二乘 alternating least square:ALS 算法来求解 FM 目标函数的最优化问题。 与 SGD 相比ALS 优点在于无需设定学习率,因此调参过程更简单。
四、FFM(Field-aware Factorization Machine)1.考虑一组特征:“性别、年龄、城市”。为简化讨论,假设:“年龄”取值集合为 [18,19,20], “城市” 取值集合为 [北京,上海,广州,深圳] 。把离散特征 one-hot 编码,设各 binary 特征分别记作:male,female,age18,age19,age20,bj,sh,gz,sz, y 表示样本标签(-1 表示不感兴趣,+1 表示感兴趣)。
记作:
POLY2模型为:$\hat{y}(\overrightarrow{\mathbf{x}})=w_{0}+\sum_{i=1}^{K} w_{i} \times x_{i}+\sum_{i=1}^{K} \sum_{j=i+1}^{K} w_{i, j} \times x_{i} \times x_{j}$,参数个数为$O(K^2)$,计算复杂度为$O(K^2)$
FM模型为:$\hat{y}(\overrightarrow{\mathbf{x}})=w_{0}+\sum_{i=1}^{K} w_{i} \times x_{i}+\sum_{i=1}^{K} \sum_{j=i+1}^{K} \hat{w}_{i, j} \times x_{i} \times x_{j}$
$\hat{w}_{i, j}=<\overrightarrow{\mathbf{v}}_{i}, \overrightarrow{\mathbf{v}}_{j}>=\sum_{l=1}^{d} v_{i, l} \times v_{j, l}$,参数个数为$O(K \times d)$,计算复杂度为$O(K \times d)$
FM要优于POLY2,原因是:交叉特征非零的样本过于稀疏使得无法很好的估计$w_{i,j}$;但是在FM中,交叉特征的参数可以从很多其他交叉特征中学习,使得参数估计更准确。如:交叉特征$(male=1,age19=1)$从未出现过,因此在POLY2模型中参数$w_{male=1,age19=1}$根本无法学习。而在FM模型中$male=1$的representation向量可以从以下交叉特征的样本中学习:$(male=1,age18=1),(male=1,age20=1),(male=1,sh=1),(male=1,sz=1)$,$age19=1$的representation向量可以从交叉特征$(age19=1,gz=1)$的样本中学习。
另外,FM还可以泛化到没有见过的交叉特征。如:交叉特征$(male=1,age19=1)$从未在训练样本中出现过,但是在预测阶段FM模型能够较好的预测该交叉特征的测试样本。
2.在FM模型中,每个特征的representation向量只有一个。如:计算$\hat{w}_{male=1,age=18}$,$\hat{w}_{male=1,age=20}$,$\hat{w}_{male=1,sh=1}$用到的是同一个向量$\overrightarrow{\mathbf{v}}_{\text {male }}=1$,论文《Field-aware Factorization Machines for CTR Prediction》提出的 FFM 算法认为:$age=18$ 和 $sh=1$ 之间的区别,远远大于 $age=18$ 和 $age=20$ 之间的区别。
因此,FFM 算法将特征划分为不同的域field。其中:
特征$male=1,female=1$属于性别域 gender field 。
特征$age18=1,age19=1,age20=1$属于年龄域 age field 。
特征$bj=1,sh=1,gz=1,sz=1$属于城市域 city field 。
FFM中每个特征的representation向量有多个,用于捕捉该特征在不同field中的含义:
如:特征$male=1$具有两个representation向量:
当用于计算age field域的交叉特征时,采用${\overrightarrow{\mathbf{V}} \mathrm{male}=1,age}$
当用于计算city field域的交叉特征时,采用${\overrightarrow{\mathbf{V}} \mathrm{male}=1,city}$
3.FFM模型
FFM模型用数学语言描述为: