一、技术原理与数学公式
1. FM(Factorization Machines)核心思想
公式:
y^(x)=w0+∑i=1nwixi+∑i=1n∑j=i+1n⟨vi,vj⟩xixj\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_jy^(x)=w0+i=1∑nwixi+i=1∑nj=i+1∑n⟨vi,vj⟩xixj
- 低秩分解:通过隐向量内积 ⟨vi,vj⟩\langle v_i, v_j \rangle⟨vi,vj⟩ 捕捉二阶特征交叉,参数复杂度从 O(n2)O(n^2)O(n2) 降至 O(kn)O(kn)O(kn)(kkk 为隐向量维度)
- 案例:电商场景中,用户ID与商品ID的交叉特征(如
user_123 × item_456)通过FM自动学习潜在关联
2. DeepFM架构
- 双路并行:FM(显式特征交叉) + DNN(隐式高阶交叉)
- 共享输入层:特征Embedding同时输入FM和DNN模块
二、实现方法(PyTorch代码片段)
import torch
import torch.nn as nn
class FM(nn.Module):
def __init__(self, feature_size, k):
super(FM, self).__init__()
self.w0 = nn.Parameter(torch.zeros(1))
self.w = nn.Embedding(feature_size, 1) # 一阶权重
self.v = nn.Embedding(fedingding(feature_size, k) # 隐向量
def forward(self, x):
# 一阶项
linear_term = torch.sum(self.w(x) * x.unsqueeze(2), dim=1)
# 二阶项
square_of_sum = torch.pow(torch.sum(self.v(x) * x.unsqueeze(2), dim=1), 2)
sum_of_square = torch.sum(torch.pow(self.v(x) * x.unsqueeze(2), 2), dim=1)
interaction = 0.5 * (square_of_sum - sum_of_square)
return self.w0 + linear_term.squeeze() + interaction.squeeze()
# DeepFM完整模型
class DeepFM(nn.Module):
def __init__(self, feature_size, k, hidden_units):
super(DeepFM, self).__init__()
self.fm = FM(feature_size, k)
self.embedding = nn.Embedding(feature_size, k)
self.dnn = nn.Sequential(
nn.Linear(k*num_fields, hidden_units[0]),
nn.ReLU(),
nn.Linear(hidden_units[0], 1)
)
def forward(self, x):
fm_output = self.fm(x)
embedded = self.embedding(x).view(x.size(0), -1)
dnn_output = self.dnn(embedded)
return torch.sigmoid(fm_output + dnn_output)
三、应用案例与效果指标
行业场景:电商推荐系统CTR预测
- 特征工程:
- 用户侧:用户ID、历史点击、购买品类偏好
- 商品侧:商品ID、价格、类目、品牌
- 上下文:时间、地理位置、设备类型
- 效果对比:
模型 AUC CTR提升 LR 0.712 - FM 0.743 +8.5% DeepFM 0.769 +15.2%
四、优化技巧
1. 超参数调优
- 隐向量维度 kkk:通常8~32,过小导致欠拟合,过大增加计算量
- 学习率:使用自适应优化器(如Adam),初始值建议0.001
- 正则化:L2正则化系数 λ\lambdaλ 设为1e-4 ~ 1e-3
2. 工程实践
- 稀疏特征处理:Hash分桶 + Embedding压缩(如TensorFlow
tf.feature_column.embedding_column) - 在线推理优化:模型轻量化(TensorRT加速)、特征预计算(如用户实时行为缓存)
五、前沿进展
1. 改进模型
- FwFM(Field-weighted FM):引入Field间权重,区分不同特征域的重要性
- xDeepFM:显式高阶特征交叉,通过CIN(Compressed Interaction Network)模块
2. 开源项目
- DeepCTR(GitHub):支持DeepFM、xDeepFM等模型的快速实现
- MetaFM(ICLR 2023):元学习优化FM隐向量初始化,冷启动效果提升20%
关键知识点总结
- FM优势:在高维稀疏数据中有效捕捉特征交叉,避免人工特征工程
- DeepFM创新点:结合浅层FM与深层DNN,兼顾记忆与泛化能力
- 实战技巧:使用
TensorBoard监控训练过程,重点关注AUC和Logloss曲线
454

被折叠的 条评论
为什么被折叠?



