对 LR 最朴素的特征组合就是二阶笛卡尔乘机,但是特征组合存在如下问题:
- 两两组合导致特征维度灾难
- 组合后的特征不见得都有效,事实上大部分可能无效
- 组合后的特征样本非常稀疏,意思就是组合容易,但是并不能在样本中找到对应的组合出现,也就没有办法在训练时更新参数。
Factorization Machine [1] 应运而生,优点有:
- 适用于稀疏数据
- FM (2-way) 比 LR 多了二阶 kernel,适用于大数据,线性复杂度,可以用 primal objective 而不是 dual objective 优化(如 SVM)
- 通用的预测模型,适用于任何实数特征。
下面是 [1] 的学习笔记。
Factorization Machine
假设训练数据集 是高度稀疏的
特征向量 ,在 [1] 中 MovieLen 的例子是用户 ID + 电影 ID + 用户特征 + 电影热编码 + 其他特征
预测结果 ,在 [1] 中的例子是用户对电影的评分
FM 模型定义(多项式拟合 logit)
\begin{align} \hat y(x) &= w_0 + \sum_{i=1}^{n} w_i x_i + \sum_{i=1}^{n} \sum_{j=i+1}^n w_{ij} x_i x_j \\ &= w_0 + \sum_{i=1}^{n} w_i x_i + \sum_{i=1}^{n} \sum_{j=i+1}^n \langle v_i , v_j \rangle x_i x_j \\ &= w_0 + \sum_{i=1}^{n} w_i x_i + \frac{1}{2} \sum_{f=1}^{k} \bigg( \bigg(\sum_{i=1}^{n} v_{i,f} x_i \bigg)^2-\sum_{i=1}^{n} v_{i,f}^2 x_i^2 \bigg) \end{align}其中
符号 是两个长度为 的向量的内积
对于任意正定矩阵 ,如果 足够大,存在可逆矩阵 使得 。
其中 的行元素 描述了有 个因子的第 个特征变量。
是一个超参数,定义了 factorization 的维度。
一个 2-way FM (d = 2)对单个特征和成对特征进行建模:
- 是 global bias (整体偏置量)
- 对第 i 个特征向量强度进行建模
- 衡量第 i 个、第 j 个特征的交叉。关系进行建模。为什么不简单地用 做参数?因为数据稀疏难以训练,且可以在 大大提高参数估计的质量。详见 Parameter Estimation Under Sparsity 章节。
Expressiveness
分解矩阵 的表达能力如何呢?
众所周知,给定正有限矩阵 (交互矩阵),如果 足够大,存在矩阵 (分解矩阵)使得 。因此,当 足够大时,一个 FM 可以表达任何矩阵 。通常限制 —— 即 FM 的 expressiveness,使模型又更好的泛化能力。
而且隐向量可以表示之前没有出现过的交叉特征,假如在数据集中经常出现 <男,篮球> ,<女,化妆品>,但是没有出现过<男,化妆品>,<女,篮球>,这时候如果用 表示<男,化妆品> 的系数,就会得到0。但是有了男特征和化妆品特征的隐向量之后,就可以通过来求解 < v 男, v 化妆品> 来求解。
Parameter Estimation Under Sparsity
对观察样本中未出现过交互的特征分量,FM 能通过 factorizing 的方法,对相应的参数进行估计。
例如,假设需要估计 Alice 对 Star Trek 的评分 。训练集中没有这样的特征项 ,满足 非零且 x_{ST} 非零,因此线性模型参数是 。但是 FM 的二阶参数 可以估计。
Computation
在 2-way FM,即 时,FM 的估计参数
模型方程 的计算复杂度为
其中第一个花括号对应 的乘法和加法操作数,第二个花括号对应 的加法和乘法操作数。对 进行改写,可以降低复杂度至 ,详见论文 [1]:
推广到多阶, 时,计算复杂度为
Learning
Model
Gradient
利用 FM 公式的 Multilinearity 性质 [4]:
如果 表示 FM 的所有模型参数,则对任意的 ,存在两个与 的取值无关的函数 和 使得成立
对任意的 求导,有:
Loss
- 回归:
- 二分类:
- ,其中 是 sigmoid 函数
- Ranking
- pairwise classification loss [6]
通常考虑 正则,因此有
其中 是参数 的正则化系数。
由于 FM 参数通常较大,因此考虑分组策略,按特征分量的意义分成 组(如人口统计学特征分成一组),从而得到正则化系数集
正则化 (regulization) 系数通常在单独的 holdout set 通过 grid search [8] 方法来获取,
Loss Gradient
以回归为例,梯度
当 取不同值时,梯度为
加上正则项
Training
SGD
随机梯度下降的思想,是每个迭代从样本中取部分样本,计算参数 对于 loss 的梯度 ,更新 ,以逐步逼近最优解。
求导数,有三种方法 [9]
- 数值微分,
- 符号微分,通过推导公式求导,本文使用方法
- 自动微分,常见于 Deep Learning 框架如 TesnsorFlow
本文 Python 实现了一个简单回归版本,用于预测 movielens 的评分,详见 github。实现过程中遇到了 loss / 准确率收敛后变大的问题。快速 debug 的技巧是通过注释,观察哪个参数的更新逻辑,使结果不收敛。最后定位到参数 的更新代码写错。
ALS
学习过程中,解决单个参数的最优化问题
尝试求其解析解,记
则最小值点应满足
ALS 每轮迭代中,当 分别为 时,利用上式可以求得 的值。
FFM
假设样本的 个特征属于 个 field,那么 FFM 的二次项有 个隐向量。而在 FM 模型中,每一维特征的隐向量只有一个。
在 FFM 中 , 是第 个特征所属的 field,
在 FM 中
Reference
[1] Rendle, Steffen. “Factorization machines.” Data Mining (ICDM), 2010. PDF
[2] Factorization Machines 学习笔记(二)模型方程 http://blog.csdn.net/itplus/article/details/40534923
[3] Factorization Machines 学习笔记(三)回归和分类 http://blog.csdn.net/itplus/article/details/40534951
[4] Factorization Machines 学习笔记(四)学习算法 http://blog.csdn.net/itplus/article/details/40536025
[5] 知乎:factorization machine和logistic regression的区别?https://www.zhihu.com/question/27043630
[6] T. Joachims, “Optimizing search engines using clickthrough data,” in
[7] KDD ’02: Proceedings of the eighth ACM SIGKDD international confer-ence on Knowledge discovery and data mining. New York, NY, USA:ACM, 2002, pp. 133–142. PDF
[8] Rendle, Steffen. “Learning recommender systems with adaptive regularization.” Proceedings of the fifth ACM international conference on Web search and data mining. ACM, 2012.
[9] 自动求导–Deep Learning框架必备技术二三事 http://www.pengfoo.com/machine-learning/2017-04-17
[10] FM算法解析, 王子姬 https://zhuanlan.zhihu.com/p/37963267
[11] 深入FFM 原理与时间, 美团技术团队 https://tech.meituan.com/2016/03/03/deep-understanding-of-ffm-principles-and-practices.html