Factorization Machines
- 论文提出了 Factorization Machine (因子分解机模型)来解决稀疏数据问题。并与支持向量机和矩阵分解算法(如SVD++)进行对比。
FM模型在稀疏数据下可以同时训练一次项参数和二次项参数。设输入向量 \(\mathbf{x} = (x_0, x_1, ..., x_n)\),则
\[\widehat{y}(\mathbf{x}) := \omega_0 + \sum_{i=1}^{n} \omega_i x_i + \sum_{i=1}^{n} \sum_{j=i+1}^{n} \left \langle\mathbf{v_i}, \mathbf{v_j} \right \rangle x_i x_j\]
其中,\(\omega_0\) 是偏置,\(\omega_i\) 是特征的一次项参数,共有 \(n\) 个。\(\mathbf{v_i}\) 是长度为 \(k\) (超参数)的向量。二次项参数 \(\widehat{\omega}_{i,j}\) 是 \(\mathbf{v_i}\) 和 \(\mathbf{v_j}\) 的内积,因此二次项参数共有 \(k \cdot n\) 个。总的参数为 \(1 + n + k \cdot n\)
此外,\(\sum_{i=1}^{n} \sum_{j=i+1}^{n} \left \langle\mathbf{v_i}, \mathbf{v_j} \right \rangle x_i x_j\) 的计算可以推导为
\[\frac{1}{2} \sum_{f=1}^{k}((\sum_{i=1}^{n} v_{i,f} x_i)^2 - \sum_{i=1}^{n} v_{i,f}^2 x_i^2)\]
因此,对一个样本进行一次预测的时间复杂度为 \(O(nk)\)。
- FM模型可以加入正则项,如L2正则;也可以扩展为 d-way FM。每增加一维的交叉特征,就会增加 \(k_d \cdot n\) 个参数,计算的时间复杂度也会乘以 \(O(n)\)。
- FM模型可以应用在一系列的预测问题中,比如回归问题,二分类问题和排序问题。二分类问题中可以选择 Hinge Loss 或者 Log Loss 作为损失函数。
- 关于超参数k
超参数 k 越大,模型的假设空间越大,表达能力越强;超参数 k 越小,模型的泛化效果越强。
可以把所有的二次项系数 \(\widehat{\omega}_{i,j}\) 看做是一个 N x N 的实对称矩阵 W(对角线元素可以看做是 \(\mathbf{v_i}\) 的 L2 范数,则均为非负数)。那么,当 k 足够大时,$ W = V^T \cdot V$。但是,在稀疏问题下,由于没有足够的样本来估计复杂的交叉特征矩阵 W,因此 k 取较小值,提高模型的泛化能力。
- 对于稀疏问题,Logistic Regression 学习每一个特征对于问题影响程度的“权重”,在推断时仅考虑数值不为0的特征,计算效率高,但无法学习到交叉特征(interactions between two features)对问题的影响。运用核技巧的对偶形式的 SVM 可以将交叉特征的影响引入到模型中。此时,支持向量定义SVM模型,确定了支持向量后,可以忽略其他数据以及所有支持向量中没有出现过的特征,同时适合处理稀疏问题。
但 SVM 有几个缺点。
- 模型中需要存储支持向量,尽管支持向量仅在所有数据集中占有一小部分。
- SVM 学习稀疏特征的超平面参数(即引入非线性核函数)的能力不强。如果在训练集中某两个特征从来同时同时出现过,则SVM无法很好地估计其参数。
- 对偶形式的 SVM 的参数与训练数据的数量有关,而推荐系统中的数据量很大。
Matrix Factorization 即矩阵分解方法(如SVD++)也有几个缺点。
- 只适合稀疏的类别特征矩阵,不适合处理标准的数值特征。
- 对于每一个特定的任务都需要单独地推导实现(derived individually for a specific task)
FM的训练和预测的时间复杂度是线性的,可以在非常稀疏的数据集下实现参数的估计。对模型的存储过程中,只需要存储参数,不需要像 SVM 一样存储训练数据。同时,其输入即可以是类别特征,也可以是数值特征。在稀疏特征中,即使存在某个交叉特征在训练集中从来没有出现,但仍然可以通过对应的两个特征的 latent variables 的内积来估计其参数。
Field-aware Factorization Machines for CTR Prediction
- 在 FM 模型中,引入了 Field 的概念。即 FFM 把相同性质的特征归类为同一个 Field。比如,对于一个类别特征,经过独热编码后变为 m 维特征,其中只有一维值为1,剩下 m-1 维的值为0。这 m 维特征属于同一个 Field。对于一个数值特征,可以归一化后不做处理,也可以现将连续的数值离散化后再做独热处理。处理过后的特征(要么使用前者得到1维特征,要么使用后者得到m维特征)属于同一个 Field。
假设模型一定有 n 维特征,f 个 Field,latent variables 的长度为 k (超参数),那么其二次项参数共有 $ n \cdot f \cdot k$ 个,计算的时间复杂度为 $O(n^2 k) $。由于一个特征对应的 latent variable 只需要学习某个 Field 的特征对该特征的影响,因此 \(k_{FFM} << k_{FM}\)。如果数据中只有 1 个 Field,那么 FFM 模型退化为 FM。
\[\widehat{y}(\mathbf{x}) := \omega_0 + \sum_{i=1}^{n} \omega_i x_i + \sum_{i=1}^{n} \sum_{j=i+1}^{n} \left \langle\mathbf{\omega}_{i, f_j}, \mathbf{\omega}_{j, f_i} \right \rangle x_i x_j\]
- FFM的实现
\[\min_{\mathbf{\omega}} \frac{\lambda}{2}||\omega||_2^2 + \sum_{i=1}^{m} log(1+exp(-y_i \phi_{FFM}(\mathbf{\omega}, \mathbf{x_i})))\]
默认使用 AdaGrad 方法进行训练优化。
根据经验,对于每一个实例,对其标准化可以使得预测精度轻微地提升,对参数的敏感性降低。
DeepFM: A Factorization-Machine based Neural Network for CTR Prediction
原文地址:https://www.cnblogs.com/viredery/p/fm_and_variants.html