因子分解机(Factorization Machines)的数学原理与计算过程
字数 1145 2025-11-23 08:57:21
因子分解机(Factorization Machines)的数学原理与计算过程
题目描述
因子分解机是一种结合支持向量机与矩阵分解优势的预测模型,能够高效处理高维稀疏数据中的特征交互问题。请你详细讲解FM模型的数学原理,特别是如何通过分解参数建模特征交互,并逐步推导其计算过程。
1. 问题背景与模型动机
- 现实场景(如推荐系统、CTR预估)中存在大量类别特征,one-hot编码后产生高维稀疏特征向量
- 传统线性模型无法捕捉特征交互,而多项式模型参数过多(如二阶交互需要学习n×(n-1)/2个参数)
- FM核心思想:通过分解交互参数为低维隐向量,将二次项参数矩阵W分解为V*V^T
2. 模型数学形式
- 二阶FM模型表达式:
ŷ(x) = w₀ + Σwᵢxᵢ + ΣΣ〈vᵢ,vⱼ〉xᵢxⱼ
其中:- w₀为全局偏置
- wᵢ为一阶特征权重
- vᵢ∈ℝᵏ为特征i的k维隐向量
- 〈vᵢ,vⱼ〉=Σvᵢ,ƒvⱼ,ƒ为隐向量内积
3. 计算优化关键步骤
原始双重求和计算复杂度O(kn²),通过数学变换降为O(kn):
a) 展开二次项:
ΣΣ〈vᵢ,vⱼ〉xᵢxⱼ = ½ΣΣΣvᵢ,ƒvⱼ,ƒxᵢxⱼ
b) 配方变换(关键步骤):
= ½Σ[(Σvᵢ,ƒxᵢ)² - Σ(vᵢ,ƒxᵢ)²]
推导过程:
利用恒等式(a+b)² = a²+b²+2ab,将ΣᵢΣⱼzᵢzⱼ转化为(Σzᵢ)² - Σzᵢ²
具体到FM:
令zᵢ = vᵢ,ƒxᵢ,则:
ΣᵢΣⱼzᵢzⱼ = (Σzᵢ)² - Σzᵢ²
代入得:ΣΣ〈vᵢ,vⱼ〉xᵢxⱼ = ½Σ[(Σvᵢ,ƒxᵢ)² - Σ(vᵢ,ƒxᵢ)²]
4. 计算过程实现
a) 初始化:为每个特征i分配隐向量vᵢ∈ℝᵏ
b) 前向计算:
- 计算一阶项:linear = w₀ + Σwᵢxᵢ
- 计算隐向量维度上的求和:
for ƒ in range(k):
sum_vec = Σvᵢ,ƒxᵢ # 对所有特征求和
sum_sqr = Σ(vᵢ,ƒxᵢ)² # 对所有特征求平方和
交互项 = ½Σ(sum_vec² - sum_sqr)
c) 最终预测:ŷ = linear + 交互项
5. 模型优势分析
- 参数数量:从O(n²)降至O(kn)
- 稀疏数据处理:即使特定特征组合在训练集中未出现,仍可通过隐向量内积预测
- 泛化能力:共享隐向量使相似特征具有相似交互权重
6. 扩展应用
- 高阶FM:通过递归方式扩展到更高阶特征交互
- 场感知FM(FFM):引入特征场概念,不同场使用不同隐向量
- 深度FM:结合深度神经网络增强表达能力
这种分解参数化的方式使FM在保持表达能力的同时大幅提升计算效率,特别适合处理大规模稀疏数据中的特征组合问题。