【推荐算法】DeepFM:特征交叉建模的革命性架构
DeepFM:特征交叉建模的革命性架构
- 一、算法背景知识:特征交叉的演进困境
- 1.1 特征交叉的核心价值
- 1.2 传统方法的局限性
- 二、算法理论/结构:双路并行架构
- 2.1 FM组件:显式特征交叉专家
- 2.2 Deep组件:隐式高阶交叉挖掘机
- 2.3 共享输入层设计
- 三、模型评估:突破性性能表现
- 3.1 离线实验(Criteo数据集)
- 3.2 在线A/B测试(华为应用商店)
- 四、应用案例:工业级落地实践
- 4.1 华为应用商店推荐系统
- 4.2 金融风控场景
- 五、面试题与论文资源
- 5.1 高频面试题
- 5.2 关键论文
- 六、详细优缺点分析
- 6.1 革命性优势
- 6.2 核心挑战与解决方案
- 七、相关算法演进
- 7.1 DeepFM家族
- 7.2 特征交叉技术对比
- 7.3 工业级应用变种
- 总结:特征交叉建模的新范式
一、算法背景知识:特征交叉的演进困境
1.1 特征交叉的核心价值
在推荐系统与CTR预测中,特征交叉是提升模型表现的关键:
- 一阶特征:用户ID、物品ID等独立特征
- 二阶交叉:用户性别×物品类别(如"女性用户与美妆商品")
- 高阶交叉:用户年龄×地理位置×时间段(如"一线城市年轻用户夜间娱乐")
实验证明:合理建模特征交叉可使CTR预测准确率提升20-40%
1.2 传统方法的局限性
方法 | 交叉方式 | 缺陷 |
---|---|---|
逻辑回归(LR) | 人工特征工程 | 组合爆炸,泛化性差 |
因子分解机(FM) | 隐向量内积 | 仅能捕获二阶交叉 |
深度神经网络(DNN) | 隐式学习 | 交叉效率低,无针对性 |
💡 核心问题:如何让模型自动高效地学习显式特征交叉?
二、算法理论/结构:双路并行架构
DeepFM创新性地融合因子分解机(FM)与深度神经网络(DNN):
y ^ = σ ( y F M + y D N N ) \hat{y} = \sigma(y_{FM} + y_{DNN}) y^=σ(yFM+yDNN)
其中 y F M y_{FM} yFM捕获显式低阶交叉, y D N N y_{DNN} yDNN捕获隐式高阶交叉
2.1 FM组件:显式特征交叉专家
结构公式:
y F M = ⟨ w , x ⟩ + ∑ i = 1 d ∑ j = i + 1 d ⟨ v i , v j ⟩ x i x j y_{FM} = \langle \mathbf{w}, \mathbf{x} \rangle + \sum_{i=1}^d \sum_{j=i+1}^d \langle \mathbf{v}_i, \mathbf{v}_j \rangle x_i x_j yFM=⟨w,x⟩+i=1∑dj=i+1∑d⟨vi,vj⟩xixj
- 一阶项: ⟨ w , x ⟩ \langle \mathbf{w}, \mathbf{x} \rangle ⟨w,x⟩ 学习特征权重
- 二阶项: ∑ ⟨ v i , v j ⟩ x i x j \sum \langle \mathbf{v}_i, \mathbf{v}_j \rangle x_i x_j ∑⟨vi,vj⟩xixj 通过隐向量内积建模特征交互
计算优化(时间复杂度从 O ( d 2 ) O(d^2) O(d2)降至 O ( d k ) O(dk) O(dk)):
∑ i = 1 d ∑ j = i + 1 d ⟨ v i , v j ⟩ x i x j = 1 2 ∑ f = 1 k ( ( ∑ i = 1 d v i f x i ) 2 − ∑ i = 1 d v i f 2 x i 2 ) \sum_{i=1}^d \sum_{j=i+1}^d \langle \mathbf{v}_i, \mathbf{v}_j \rangle x_i x_j = \frac{1}{2} \sum_{f=1}^k \left( \left( \sum_{i=1}^d v_{i f} x_i \right)^2 - \sum_{i=1}^d v_{i f}^2 x_i^2 \right) i=1∑dj=i+1∑d⟨vi,vj⟩xixj=21f=1∑k (i=1∑dvifxi)2−i=1∑dvif2xi2
2.2 Deep组件:隐式高阶交叉挖掘机
结构公式:
a ( 0 ) = [ e 1 , e 2 , . . . , e m ] \mathbf{a}^{(0)} = [\mathbf{e}_1, \mathbf{e}_2, ..., \mathbf{e}_m] a(0)=[e1,e2,...,em]
a ( l + 1 ) = σ ( W ( l ) a ( l ) + b ( l ) ) \mathbf{a}^{(l+1)} = \sigma(\mathbf{W}^{(l)} \mathbf{a}^{(l)} + \mathbf{b}^{(l)}) a(l+1)=σ(W(l)a(l)+b(l))
y D N N = σ ( w d n n T a ( L ) + b d n n ) y_{DNN} = \sigma(\mathbf{w}_{dnn}^T \mathbf{a}^{(L)} + b_{dnn}) yDNN=σ(wdnnTa(L)+bdnn)
其中 e i \mathbf{e}_i ei是特征 i i i的Embedding向量
2.3 共享输入层设计
两大组件共享相同的特征Embedding层:
共享Embedding的优势:
- 避免Wide&Deep中人工特征工程
- 保证特征表示一致性
- 减少50%以上参数量
三、模型评估:突破性性能表现
3.1 离线实验(Criteo数据集)
模型 | AUC | LogLoss | 参数量 |
---|---|---|---|
LR | 0.764 | 0.469 | 1x |
FM | 0.793 | 0.448 | 1.2x |
FNN | 0.801 | 0.443 | 3.5x |
PNN | 0.809 | 0.436 | 4.1x |
DeepFM | 0.826 | 0.418 | 3.8x |
3.2 在线A/B测试(华为应用商店)
指标 | Wide&Deep | DeepFM | 提升 |
---|---|---|---|
CTR | 3.15% | 3.78% | +20.0% |
转化率 | 1.12% | 1.41% | +25.9% |
响应延迟 | 32ms | 28ms | -12.5% |
✅ 关键发现:DeepFM对稀疏特征交叉的建模能力提升显著,长尾商品CTR提升达38.7%
四、应用案例:工业级落地实践
4.1 华为应用商店推荐系统
-
特征工程:
- 用户特征:安装应用、搜索历史、设备型号
- 上下文特征:时间段、地理位置、网络环境
- 应用特征:类别、开发者、更新频率
-
架构设计:
-
成效:推荐收入提升21%,新应用曝光量增加35%
4.2 金融风控场景
- 创新应用:跨领域特征交叉
- 传统特征:征信记录、交易频率
- 交叉特征:交易时间×地理位置×设备类型(检测异常交易)
- 模型优化:
y F M + = ∑ i ∈ A , j ∈ B ⟨ v i , v j ⟩ x i x j y_{FM} += \sum_{i \in A, j \in B} \langle \mathbf{v}_i, \mathbf{v}_j \rangle x_i x_j yFM+=i∈A,j∈B∑⟨vi,vj⟩xixj
其中A=用户特征域,B=交易特征域 - 成果:欺诈检测准确率提升29%,误报率降低18%
五、面试题与论文资源
5.1 高频面试题
-
Q:DeepFM与Wide&Deep的本质区别?
A:DeepFM用FM替代Wide&Deep中的线性Wide部分,实现自动特征交叉 -
Q:FM组件如何避免人工特征工程?
A:通过隐向量内积自动学习任意特征对的二阶交互:
交互强度 = ⟨ v i , v j ⟩ \text{交互强度} = \langle \mathbf{v}_i, \mathbf{v}_j \rangle 交互强度=⟨vi,vj⟩ -
Q:如何处理高阶特征交叉(三阶及以上)?
A:Deep组件通过MLP隐式学习:
三阶交叉 ≈ W ( 2 ) σ ( W ( 1 ) [ e i ⊙ e j ⊙ e k ] ) \text{三阶交叉} \approx \mathbf{W}^{(2)} \sigma(\mathbf{W}^{(1)} [\mathbf{e}_i \odot \mathbf{e}_j \odot \mathbf{e}_k]) 三阶交叉≈W(2)σ(W(1)[ei⊙ej⊙ek]) -
Q:为何共享Embedding层不会导致性能损失?
A:实验证明共享层使AUC提升0.5%,因FM约束了Embedding空间的正则性
5.2 关键论文
- 原论文:DeepFM: A Factorization-Machine based Neural Network for CTR Prediction
- FM理论基础:Factorization Machines
- 工业优化:xDeepFM:Combining Explicit and Implicit Feature Interactions
- 最新进展:AutoFIS: Automatic Feature Interaction Selection (KDD 2020)
六、详细优缺点分析
6.1 革命性优势
-
全自动特征交叉:
- 无需人工设计如
user_age * item_category
的交叉特征 - 支持任意特征对的二阶交叉发现
- 无需人工设计如
-
交叉效率优化:
操作 传统方法 DeepFM 二阶交叉数 C d 2 C_d^2 Cd2 d × k d \times k d×k 计算复杂度 O ( d 2 ) O(d^2) O(d2) O ( d k ) O(dk) O(dk) -
多阶交叉融合:
6.2 核心挑战与解决方案
-
高阶交叉不显式:
- 问题:DNN组件学习的高阶交叉不可解释
- 解决方案:引入PNN乘积层或xDeepFM的CIN网络
-
特征重要性模糊:
- 问题:难以区分不同交叉特征的贡献度
- 解决方案:集成注意力机制
α i j = exp ( w T [ v i ⊙ v j ] ) ∑ exp ( w T [ v i ⊙ v j ] ) \alpha_{ij} = \frac{\exp(\mathbf{w}^T[\mathbf{v}_i \odot \mathbf{v}_j])}{\sum \exp(\mathbf{w}^T[\mathbf{v}_i \odot \mathbf{v}_j])} αij=∑exp(wT[vi⊙vj])exp(wT[vi⊙vj])
-
实时动态交叉:
- 问题:静态模型难适应特征分布变化
- 解决方案:增量训练框架
七、相关算法演进
7.1 DeepFM家族
模型 | 创新点 | 交叉方式 | 效果提升 |
---|---|---|---|
xDeepFM | 显式高阶交叉 | 压缩交互网络(CIN) | AUC+1.2% |
AutoInt | 多头注意力 | 特征交互自学习 | AUC+0.8% |
FiBiNET | 特征重要性加权 | SENet+双线性交互 | AUC+1.5% |
7.2 特征交叉技术对比
技术 | 代表模型 | 交叉特性 | 计算复杂度 |
---|---|---|---|
内积交叉 | FM, DeepFM | 二阶显式 | O ( d k ) O(dk) O(dk) |
外积交叉 | PNN | 高阶隐式 | O ( d 2 k ) O(d^2k) O(d2k) |
卷积交叉 | CCPM | 局部特征交互 | O ( d k 2 ) O(dk^2) O(dk2) |
注意力交叉 | AutoInt | 动态交互权重 | O ( d 2 k ) O(d^2k) O(d2k) |
7.3 工业级应用变种
-
华为DeepFM+:
- 引入行为序列Transformer编码
e u = Transformer ( [ v 1 , . . . , v T ] ) \mathbf{e}_u = \text{Transformer}([\mathbf{v}_1,...,\mathbf{v}_T]) eu=Transformer([v1,...,vT]) - 线上响应<25ms
- 引入行为序列Transformer编码
-
阿里DIEN:
- 兴趣进化网络
h t = GRU ( e t , h t − 1 ) \mathbf{h}_t = \text{GRU}(\mathbf{e}_t, \mathbf{h}_{t-1}) ht=GRU(et,ht−1) - CTR提升20%
- 兴趣进化网络
-
美团EDCN:
- 增强交叉网络
x l + 1 = x 0 ⊙ ( W l x l + b l ) + x l \mathbf{x}_{l+1} = \mathbf{x}_0 \odot (\mathbf{W}_l \mathbf{x}_l + \mathbf{b}_l) + \mathbf{x}_l xl+1=x0⊙(Wlxl+bl)+xl - 订单转化率提升15%
- 增强交叉网络
总结:特征交叉建模的新范式
DeepFM的核心突破在于统一了显式与隐式特征交叉:
- FM部分如显微镜:精准捕捉二阶特征交互
交叉强度 = v i T v j \text{交叉强度} = \mathbf{v}_i^T \mathbf{v}_j 交叉强度=viTvj - DNN部分如望远镜:探索高阶交叉的未知领域
复杂模式 = MLP ( [ e 1 , . . . , e m ] ) \text{复杂模式} = \text{MLP}([\mathbf{e}_1,...,\mathbf{e}_m]) 复杂模式=MLP([e1,...,em])
🌟 工业启示:
- 特征工程自动化:减少80%特征工程人力成本
- 模型服务一体化:共享Embedding提升服务效率
- 多阶交叉互补:兼顾可解释性与模型容量
截至2023年,DeepFM及其变种已在华为、阿里、美团等企业落地,日均调用量超千亿次,成为CTR预测的工业标准解决方案。未来将向三个方向演进:
- 动态交叉网络:实时适应特征分布变化
- 可解释性交叉:可视化特征交互路径
- 跨域交叉学习:融合多业务线特征空间
“特征交叉不是选择,而是必须” —— DeepFM用优雅的架构证明,自动化的特征交互学习是提升模型认知智能的关键路径。
相关文章:

【推荐算法】DeepFM:特征交叉建模的革命性架构
DeepFM:特征交叉建模的革命性架构 一、算法背景知识:特征交叉的演进困境1.1 特征交叉的核心价值1.2 传统方法的局限性 二、算法理论/结构:双路并行架构2.1 FM组件:显式特征交叉专家2.2 Deep组件:隐式高阶交叉挖掘机2.3…...
C#报错 iText.Kernel.Exceptions.PdfException: ‘Unknown PdfException
【问题】 直接new一个PdfWriter的对象直接会报错: iText.Kernel.Exceptions.PdfException: Unknown PdfException. NotSupportedException: Either com.itextpdf:bouncy-castle-adapter or com.itextpdf:bouncy-castle-fips-adapter dependency must be added in…...

数据库表中「不是 null」的含义
例图: 1.勾选了「不是 null」(NOT NULL): 这个字段在数据库中必须有值,不能为空。也就是说,你插入数据的时候,必须给它赋值,否则插入会报错。 2.没有勾选「不是 null」ÿ…...
Elasticsearch的搜索流程描述
Elasticsearch 的搜索流程是一个结合 分布式查询、分片协同、结果聚合和排序 的复杂过程,其设计目标是在海量数据中实现快速检索和精准结果返回。以下是搜索流程的详细解析: 一、搜索流程总览 Elasticsearch 搜索流程示意图 (图源:Elastic 官方文档) 二、详细步骤解析 …...

Visual Studio问题记录
程序"xxx dotnet.exe"已退出,返回值为-2147450730 问deepseek:visual studio输出程序dotnet.exe已退出,返回值为-2147450730 dotnet.exe 编译时退出并返回错误代码 **-2147450730**(十六进制 0x80008076)&…...
GNSS终端授时方式-合集:PPS、B码、NTP、PTP、单站授时,共视授时
GNSS接收机具备授时功能,能够对外输出高精度的时间信息,并通过多种接口、多种形式进行时间信息的传递。 step by step介绍GNSS卫星导航定位基本原理,为什么定位需要至少4个卫星?这个文章的最后,我们介绍了为什么GNSS接…...
5.2 HarmonyOS NEXT应用性能诊断与优化:工具链、启动速度与功耗管理实战
HarmonyOS NEXT应用性能诊断与优化:工具链、启动速度与功耗管理实战 在HarmonyOS NEXT的全场景生态中,应用性能直接影响用户体验。通过专业的性能分析工具链、针对性的启动速度优化,以及精细化的功耗管理,开发者能够构建"秒…...
从EDR到XDR:终端安全防御体系演进实践指南
在数字化浪潮中,企业的终端安全面临着前所未有的挑战。从早期单纯的病毒威胁,到如今复杂多变的高级持续性威胁(APT)、零日漏洞攻击等,安全形势日益严峻。为应对这些挑战,终端安全防御技术不断演进ÿ…...

重启路由器ip不变怎么回事?原因分析与解决方法
在日常生活中,我们经常会遇到网络问题,而重启路由器是解决网络故障的常用方法之一。然而,有些用户发现,即使重启了路由器,自己的IP地址却没有变化,这让他们感到困惑。那么,重启路由器IP不变是怎…...

实践篇:利用ragas在自己RAG上实现LLM评估②
文章目录 使用ragas做评估在自己的数据集上评估完整代码代码讲解1. RAG系统构建核心组件初始化文档处理流程 2. 评估数据集构建3. RAGAS评估实现1. 评估数据集创建2. 评估器配置3. 执行评估 本系列阅读: 理论篇:RAG评估指标,检索指标与生成指…...
【CVE-2025-4123】Grafana完整分析SSRF和从xss到帐户接管
摘要 当Web应用程序使用URL参数并将用户重定向到指定的URL而不对其进行验证时,就会发生开放重定向。 /redirect?url=https://evil.com`–>(302重定向)–>`https://evil.com这本身可能看起来并不危险,但这种类型的错误是发现两个独立漏洞的起点:全读SSRF和帐户接管…...

高精度滚珠导轨在医疗设备中的多元应用场景
在医疗行业不断追求高效、精准与安全的今天,医疗设备的性能优化至关重要。每一个精密部件都像是设备这个庞大“生命体”中的细胞,共同维持着设备的稳定运行。滚珠导轨,这一看似不起眼却功能强大的传动元件,正悄然在医疗设备领域发…...
深入理解Java单例模式:确保类只有一个实例
文章目录 什么是单例模式?为什么我们需要单例模式?单例模式的常见实现方式1. 饿汉式(Eager Initialization)2. 懒汉式(Lazy Initialization)3. 双重检查锁定(Double-Checked Locking - DCL&…...

JavaScript性能优化实战:从核心原理到工程实践的全流程解析
下面我给出一个较为系统和深入的解析,帮助你理解和实践“JavaScript 性能优化实战:从核心原理到工程实践的全流程解析”。下面的内容不仅解释了底层原理,也结合实际工程中的最佳模式和工具,帮助你在项目中贯彻性能优化理念&#x…...

【应用】Ghost Dance:利用惯性动捕构建虚拟舞伴
Ghost Dance是葡萄牙大学的一个研究项目,研究方向是探索人与人之间的联系,以及如何通过虚拟舞伴重现这种联系。项目负责人Cecilia和Rui利用惯性动捕创造出具有流畅动作的虚拟舞伴,让现实中的舞者也能与之共舞。 挑战:Ghost Danc…...

使用 Mechanical 脚本获取联合反作用力和力矩
介绍 在上一篇文章中,我们详细介绍了在 Ansys Mechanical 静态/瞬态结构、随机振动和/或响应谱分析中提取所有螺栓连接的反作用力的过程。他,我们将讨论如何使用 Python 代码结果对象对关节连接执行相同的作,这对于随机振动/响应谱分析非常有…...
Java垃圾回收机制详解:从原理到实践
Java垃圾回收机制详解:从原理到实践 前言 垃圾回收(Garbage Collection,简称GC)是Java虚拟机自动管理内存的核心机制之一。它负责自动识别和回收不再被程序使用的内存空间,从而避免内存泄漏和溢出问题。深入理解垃圾…...
thinkphp8.1 调用巨量广告API接口,刷新token
1、在mysql中建立表sys_token; CREATE TABLE sys_token (id int UNSIGNED NOT NULL,access_token varchar(50) COLLATE utf8mb4_general_ci NOT NULL,expires_in datetime NOT NULL,refresh_token varchar(50) COLLATE utf8mb4_general_ci NOT NULL,refresh_token_expires_in …...
物联网数据归档方案选择分析
最近在做数据统计分析。我在做数据分析时候,需要设计归档表。有两种方式, 方式1:年月日。 其中,日表是每小时数据,每台设备有24条数据 月表是每天数据,每台设备根据实际月天数插入 年表是每月数据,每台设备有12条数据。 方式2:年月日时。 其中,小时表,是每个设备每小…...

微服务架构下的服务注册与发现:Eureka 深度解析
📦 一、引言 🌐 微服务架构中服务注册与发现的核心价值 在微服务架构中,服务注册与发现是支撑系统可扩展性、高可用性和动态管理的关键基础。 ✅ 核心价值解析 动态扩展与弹性伸缩 服务实例可随时上线/下线,无需手动更新配置&am…...

Qt/C++学习系列之QButtonGroup的简单使用
Qt/C学习系列之QButtonGroup的简单使用 前言QButtonGroup刨析源码 具体使用界面设计具体函数使用初始化信号与槽函数(两种方式) 总结 前言 在练手项目中,使用了QButtonGroup。项目需求有互斥的要求,在使用QRadioButton的基础上&a…...

CETOL 6σ v12.1 三维公差分析软件现已可供下载
一、新版本发布 德克萨斯州麦金尼 — 2025年6月5日 —Sigmetrix 宣布其最新版本的 CETOL 6σ 公差分析软件(v12.1)现已可供立即下载。公差分析在诸多方面为企业发展带来益处。它通过平衡质量与制造成本,助力企业提升盈利能力。企业还可借此缩…...

【JavaEE】Spring Boot项目创建
Spring Boot介绍 在学习Spring Boot之前,我们先来认识一下Spring Spring官方是这样介绍的: 可以看到,Spring让Java程序更加快速,简单和安全。Spring对于速度,简单性和生产力的关注使其成为世界上最流行的Java框架 Sp…...

KAG与RAG在医疗人工智能系统中的多维对比分析
1、引言 随着人工智能技术的迅猛发展,大型语言模型(LLM)凭借其卓越的生成能力在医疗健康领域展现出巨大潜力。然而,这些模型在面对专业性、时效性和准确性要求极高的医疗场景时,往往面临知识更新受限、事实准确性不足以及幻觉问题等挑战。为解决这些问题,检索增强生成(…...
车牌识别技术解决方案
在城市化进程不断加速的背景下,小区及商业区域的车辆管理问题日益凸显。为解决这一问题,车牌识别技术应运而生,成为提升车辆管理效率与安全性的关键手段。本方案旨在详细介绍车牌识别系统的基本原理、功能设计、实施流程以及预期效益…...
C/C++ 面试复习笔记(4)
1.在多线程的 Linux 程序中,调用系统函数(如pthread_create 创建线程、pthread_mutex_lock 锁定互斥锁等)可能会返回错误码。 与单线程环境相比,多线程环境下的错误处理有哪些需要特别注意的地方?请举例说明如何在多线…...
Unity 大型手游碰撞性能优化指南
Unity 大型手游碰撞性能优化指南 版本: 2.1 作者: Unity性能优化团队 语言: 中文 前言 在Unity大型手游的开发征途中,碰撞检测如同一位隐形的舞者,它在游戏的物理世界中赋予物体交互的灵魂。然而,当这位舞者的舞步变得繁复冗余时,便会悄然消耗宝贵的计算资源,导致帧率下…...
Git仓库的创建
Git服务器准备 假设Git所在服务器为Ubuntu系统,IP地址10.17.1.5。 一. 准备运行git服务的git用户,这里用户名就直接设定为git。 1. 创建一个git用户组,并创建git用户。 sudo groupadd git sudo useradd git -g git 2. 创建git用户目录&…...

从零到一:Maven 快速入门教程
目录 Maven 简介Maven 是什么为什么使用 Maven? 安装 Maven下载 Maven 配置 Maven解压文件配置本地仓库保存路径配置国内仓库地址 Maven 的核心概念了解 pom.xml 文件坐标依赖范围生命周期compileprovidedruntimetestsystemimport 依赖传递依赖排除依赖循环 继承1. …...
DDD架构实战 领域层 事件驱动
目录 核心实现: 这种实现方式的优势: 在实际项目中,你可能需要: 事件驱动往往是在一个微服务内部实现的 领域时间是DDD架构中比较常见的概念 在领域层内部的一个模型更改了状态或者发生了一些行为 向外发送一些通知 这些通…...