【推荐算法】DeepFM:特征交叉建模的革命性架构

news2025/6/7 10:01:13

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)隐式学习交叉效率低,无针对性
原始特征
人工交叉特征
LR模型
Embedding层
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=1dj=i+1dvi,vjxixj

  • 一阶项 ⟨ 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,vjxixj 通过隐向量内积建模特征交互

计算优化(时间复杂度从 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=1dj=i+1dvi,vjxixj=21f=1k (i=1dvifxi)2i=1dvif2xi2

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层
FM组件
Deep组件
相加层
Sigmoid输出

共享Embedding的优势

  1. 避免Wide&Deep中人工特征工程
  2. 保证特征表示一致性
  3. 减少50%以上参数量

三、模型评估:突破性性能表现

3.1 离线实验(Criteo数据集)
模型AUCLogLoss参数量
LR0.7640.4691x
FM0.7930.4481.2x
FNN0.8010.4433.5x
PNN0.8090.4364.1x
DeepFM0.8260.4183.8x
3.2 在线A/B测试(华为应用商店)
指标Wide&DeepDeepFM提升
CTR3.15%3.78%+20.0%
转化率1.12%1.41%+25.9%
响应延迟32ms28ms-12.5%

关键发现:DeepFM对稀疏特征交叉的建模能力提升显著,长尾商品CTR提升达38.7%

四、应用案例:工业级落地实践

4.1 华为应用商店推荐系统
  • 特征工程

    • 用户特征:安装应用、搜索历史、设备型号
    • 上下文特征:时间段、地理位置、网络环境
    • 应用特征:类别、开发者、更新频率
  • 架构设计

    实时特征流
    Kafka队列
    DeepFM模型
    Redis特征缓存
    推荐服务
  • 成效:推荐收入提升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+=iA,jBvi,vjxixj
    其中A=用户特征域,B=交易特征域
  • 成果:欺诈检测准确率提升29%,误报率降低18%

五、面试题与论文资源

5.1 高频面试题
  1. Q:DeepFM与Wide&Deep的本质区别?
    A:DeepFM用FM替代Wide&Deep中的线性Wide部分,实现自动特征交叉

  2. Q:FM组件如何避免人工特征工程?
    A:通过隐向量内积自动学习任意特征对的二阶交互:
    交互强度 = ⟨ v i , v j ⟩ \text{交互强度} = \langle \mathbf{v}_i, \mathbf{v}_j \rangle 交互强度=vi,vj

  3. 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)[eiejek])

  4. Q:为何共享Embedding层不会导致性能损失?
    A:实验证明共享层使AUC提升0.5%,因FM约束了Embedding空间的正则性

5.2 关键论文
  1. 原论文:DeepFM: A Factorization-Machine based Neural Network for CTR Prediction
  2. FM理论基础:Factorization Machines
  3. 工业优化:xDeepFM:Combining Explicit and Implicit Feature Interactions
  4. 最新进展:AutoFIS: Automatic Feature Interaction Selection (KDD 2020)

六、详细优缺点分析

6.1 革命性优势
  1. 全自动特征交叉

    • 无需人工设计如user_age * item_category的交叉特征
    • 支持任意特征对的二阶交叉发现
  2. 交叉效率优化

    操作传统方法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)
  3. 多阶交叉融合

    一阶线性
    FM
    二阶显式交叉
    高阶隐式交叉
    DNN
    DeepFM
6.2 核心挑战与解决方案
  1. 高阶交叉不显式

    • 问题:DNN组件学习的高阶交叉不可解释
    • 解决方案:引入PNN乘积层或xDeepFM的CIN网络
  2. 特征重要性模糊

    • 问题:难以区分不同交叉特征的贡献度
    • 解决方案:集成注意力机制
      α 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[vivj])exp(wT[vivj])
  3. 实时动态交叉

    • 问题:静态模型难适应特征分布变化
    • 解决方案:增量训练框架
    新数据
    增量更新
    FM向量
    DNN权重

七、相关算法演进

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 工业级应用变种
  1. 华为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
  2. 阿里DIEN

    • 兴趣进化网络
      h t = GRU ( e t , h t − 1 ) \mathbf{h}_t = \text{GRU}(\mathbf{e}_t, \mathbf{h}_{t-1}) ht=GRU(et,ht1)
    • CTR提升20%
  3. 美团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的核心突破在于统一了显式与隐式特征交叉

  1. FM部分如显微镜:精准捕捉二阶特征交互
    交叉强度 = v i T v j \text{交叉强度} = \mathbf{v}_i^T \mathbf{v}_j 交叉强度=viTvj
  2. DNN部分如望远镜:探索高阶交叉的未知领域
    复杂模式 = MLP ( [ e 1 , . . . , e m ] ) \text{复杂模式} = \text{MLP}([\mathbf{e}_1,...,\mathbf{e}_m]) 复杂模式=MLP([e1,...,em])

🌟 工业启示

  • 特征工程自动化:减少80%特征工程人力成本
  • 模型服务一体化:共享Embedding提升服务效率
  • 多阶交叉互补:兼顾可解释性与模型容量

截至2023年,DeepFM及其变种已在华为、阿里、美团等企业落地,日均调用量超千亿次,成为CTR预测的工业标准解决方案。未来将向三个方向演进:

  1. 动态交叉网络:实时适应特征分布变化
  2. 可解释性交叉:可视化特征交互路径
  3. 跨域交叉学习:融合多业务线特征空间

“特征交叉不是选择,而是必须” —— DeepFM用优雅的架构证明,自动化的特征交互学习是提升模型认知智能的关键路径。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2402754.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库表中「不是 null」的含义

例图&#xff1a; 1.勾选了「不是 null」&#xff08;NOT NULL&#xff09;&#xff1a; 这个字段在数据库中必须有值&#xff0c;不能为空。也就是说&#xff0c;你插入数据的时候&#xff0c;必须给它赋值&#xff0c;否则插入会报错。 2.没有勾选「不是 null」&#xff…

Visual Studio问题记录

程序"xxx dotnet.exe"已退出&#xff0c;返回值为-2147450730 问deepseek&#xff1a;visual studio输出程序dotnet.exe已退出&#xff0c;返回值为-2147450730 dotnet.exe 编译时退出并返回错误代码 **-2147450730**&#xff08;十六进制 0x80008076&#xff09;&…

重启路由器ip不变怎么回事?原因分析与解决方法

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

实践篇:利用ragas在自己RAG上实现LLM评估②

文章目录 使用ragas做评估在自己的数据集上评估完整代码代码讲解1. RAG系统构建核心组件初始化文档处理流程 2. 评估数据集构建3. RAGAS评估实现1. 评估数据集创建2. 评估器配置3. 执行评估 本系列阅读&#xff1a; 理论篇&#xff1a;RAG评估指标&#xff0c;检索指标与生成指…

高精度滚珠导轨在医疗设备中的多元应用场景

在医疗行业不断追求高效、精准与安全的今天&#xff0c;医疗设备的性能优化至关重要。每一个精密部件都像是设备这个庞大“生命体”中的细胞&#xff0c;共同维持着设备的稳定运行。滚珠导轨&#xff0c;这一看似不起眼却功能强大的传动元件&#xff0c;正悄然在医疗设备领域发…

JavaScript性能优化实战:从核心原理到工程实践的全流程解析

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

【应用】Ghost Dance:利用惯性动捕构建虚拟舞伴

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

使用 Mechanical 脚本获取联合反作用力和力矩

介绍 在上一篇文章中&#xff0c;我们详细介绍了在 Ansys Mechanical 静态/瞬态结构、随机振动和/或响应谱分析中提取所有螺栓连接的反作用力的过程。他&#xff0c;我们将讨论如何使用 Python 代码结果对象对关节连接执行相同的作&#xff0c;这对于随机振动/响应谱分析非常有…

微服务架构下的服务注册与发现:Eureka 深度解析

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

Qt/C++学习系列之QButtonGroup的简单使用

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

CETOL 6σ v12.1 三维公差分析软件现已可供下载

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

【JavaEE】Spring Boot项目创建

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

KAG与RAG在医疗人工智能系统中的多维对比分析

1、引言 随着人工智能技术的迅猛发展,大型语言模型(LLM)凭借其卓越的生成能力在医疗健康领域展现出巨大潜力。然而,这些模型在面对专业性、时效性和准确性要求极高的医疗场景时,往往面临知识更新受限、事实准确性不足以及幻觉问题等挑战。为解决这些问题,检索增强生成(…

从零到一:Maven 快速入门教程

目录 Maven 简介Maven 是什么为什么使用 Maven&#xff1f; 安装 Maven下载 Maven 配置 Maven解压文件配置本地仓库保存路径配置国内仓库地址 Maven 的核心概念了解 pom.xml 文件坐标依赖范围生命周期compileprovidedruntimetestsystemimport 依赖传递依赖排除依赖循环 继承1. …

postman基础

前言 本次 Chat 将结合业界广为推崇和使用的 RestAPI 设计典范 Github API&#xff0c;详细介绍 Postman 接口测试工具的使用方法和实战技巧。 在开始这个教程之前&#xff0c;先聊一下为什么接口测试在现软件行业如此重要&#xff1f; 为什么我们要学习 Postman&#xff1f;…

python训练营day45

知识点回顾&#xff1a; tensorboard的发展历史和原理tensorboard的常见操作tensorboard在cifar上的实战&#xff1a;MLP和CNN模型 效果展示如下&#xff0c;很适合拿去组会汇报撑页数&#xff1a; 作业&#xff1a;对resnet18在cifar10上采用微调策略下&#xff0c;用tensorbo…

Halcon透视矩阵

在 Halcon中&#xff0c;透视变换矩阵用于将图像从一个视角转换到另一个视角&#xff0c;常用于图像校正和几何变换。以下是计算透视变换矩阵的步骤及代码示例。 透视形变图像校正的步骤 对图像左简单的处理&#xff0c;分割要校正的区域&#xff1b;提取区域的顶点坐标信息&…

007-nlohmann/json 项目应用-C++开源库108杰

本课为 fswatch&#xff08;第一“杰”&#xff09;的示例项目加上对配置文件读取的支持&#xff0c;同时借助 第三“杰” CLI11 的支持&#xff0c;完美实现命令行参数与配置文件的逻辑统一。 012-nlohmann/json-4-项目应用 项目基于原有的 CMake 项目 HelloFSWatch 修改。 C…

移动端测试岗位高频面试题及解析

文章目录 一、基础概念二、自动化测试三、性能测试四、专项测试五、安全与稳定性六、高级场景七、实战难题八、其他面题 一、基础概念 移动端测试与Web测试的核心区别&#xff1f; 解析&#xff1a;网络波动&#xff08;弱网测试&#xff09;、设备碎片化&#xff08;机型适配&…

Git GitHub Gitee

一、Git 是一个免费、开源的分布式版本控制系统。 版本控制&#xff1a;一种记录文件内容变化&#xff0c;以便将来查阅特定版本修订情况的系统。它最重要的就是可以记录文件修改历史记录&#xff0c;从而让用户可以看历史版本&#xff0c;方便版本切换。 1.和集中式版本控制…