因子分解机(Factorization Machines)算法的原理与计算过程
题目描述
因子分解机(Factorization Machines, FM)是一种监督学习算法,适用于高维稀疏数据(如推荐系统、点击率预测等场景)。FM通过引入特征交叉的隐向量内积,将支持向量机的通用性与矩阵分解的隐因子思想结合,能高效建模二阶特征交互,解决数据稀疏下的参数估计问题。要求:详细讲解FM的模型形式、参数计算及训练过程。
1. 问题背景与模型动机
在高维稀疏数据中(例如用户-物品交互矩阵),直接学习特征间的交互权重面临挑战:
- 传统线性模型(如逻辑回归)无法捕获特征交互(如“用户A喜欢电影B”这一组合效应)。
- 二阶多项式模型需学习所有特征对的权重 \(w_{ij}\),参数量为 \(O(n^2)\),且稀疏数据下很多 \(w_{ij}\) 缺乏样本估计。
FM的解决方案:
- 将每个特征 \(x_i\) 关联一个隐向量 \(v_i \in \mathbb{R}^k\)(\(k\) 为隐向量维度)。
- 用隐向量的内积 \(\langle v_i, v_j \rangle\) 模拟特征交互权重 \(w_{ij}\),参数量降至 \(O(k \cdot n)\)。
2. FM模型数学形式
FM的预测函数为:
\[\hat{y}(x) = 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\):全局偏置。
- \(w_i\):特征 \(i\) 的一阶权重。
- \(v_i = [v_{i1}, v_{i2}, ..., v_{ik}]\):特征 \(i\) 的隐向量。
- 交互项仅计算 \(j>i\) 避免重复。
隐向量内积的意义:
- 若特征 \(i\) 和 \(j\) 从未共同出现,仍可通过其他特征对 \(v_i\) 和 \(v_j\) 的更新间接估计交互权重。
- 例如,用户特征和物品特征可通过交互过的中间特征(如电影类型)传递信息。
3. 交互项的计算优化
直接计算二阶项复杂度为 \(O(kn^2)\),但可通过重构降至 \(O(kn)\):
\[\sum_{i=1}^{n} \sum_{j=i+1}^{n} \langle v_i, v_j \rangle x_i x_j = \frac{1}{2} \sum_{f=1}^{k} \left[ \left( \sum_{i=1}^{n} v_{if} x_i \right)^2 - \sum_{i=1}^{n} v_{if}^2 x_i^2 \right] \]
推导过程:
- 展开交互项:
\[\sum_{i,j} \langle v_i, v_j \rangle x_i x_j = \sum_{f=1}^{k} \left( \sum_{i=1}^{n} v_{if} x_i \right) \left( \sum_{j=1}^{n} v_{jf} x_j \right) - \sum_{f=1}^{k} \sum_{i=1}^{n} v_{if}^2 x_i^2 \]
- 第一项是平方和,包含 \(i=j\) 的项,需减去第二项(对角项)。
- 因交互项仅需 \(i \neq j\),再除以2消除重复对。
计算步骤:
- 对每个隐维度 \(f\),计算 \(\sum_i v_{if} x_i\)(复杂度 \(O(n)\))。
- 平方后减去 \(\sum_i v_{if}^2 x_i^2\),求和 over \(f\)(复杂度 \(O(kn)\))。
4. 参数学习与训练
使用梯度下降优化损失函数(如均方误差或交叉熵)。
梯度计算(以回归问题为例,损失函数为 \(L = \frac{1}{2}(\hat{y} - y)^2\)):
- 全局偏置 \(w_0\):
\[ \frac{\partial L}{\partial w_0} = (\hat{y} - y) \]
- 一阶权重 \(w_i\):
\[ \frac{\partial L}{\partial w_i} = (\hat{y} - y) x_i \]
- 隐向量 \(v_{if}\):
\[ \frac{\partial L}{\partial v_{if}} = (\hat{y} - y) \cdot x_i \left( \sum_{j=1}^{n} v_{jf} x_j - v_{if} x_i \right) \]
其中 \(\sum_j v_{jf} x_j\) 已在前述优化计算中缓存,无需重复计算。
训练流程:
- 初始化参数 \(w_0, w_i, v_{if}\)(通常用随机小值)。
- 对每个样本 \(x\):
- 计算预测值 \(\hat{y}(x)\)(使用优化后的二阶项计算)。
- 计算损失梯度,更新参数。
- 迭代至收敛。
5. 扩展与特点
- 高阶FM:可扩展至更高阶交互(计算复杂度增加)。
- 与矩阵分解关系:若输入仅用户ID和物品ID,FM退化为传统矩阵分解模型。
- 优势:处理稀疏数据、泛化性强、线性计算复杂度。
通过上述步骤,FM将特征交互建模转化为隐向量学习,兼顾模型表现与计算效率。