ctr/cvr预估之DeepFM模型

news2024/11/23 23:52:26

ctr/cvr预估之DeepFM模型

在数字营销的浪潮中,点击率(CTR)和转化率(CVR)预估已成为精准广告投放和个性化推荐系统的核心。随着深度学习技术的蓬勃发展,传统的机器学习方法,如逻辑回归和因子分解机(FM),虽然在某些方面表现出色,但在处理高维稀疏数据和捕捉复杂特征交互方面逐渐显现出局限性。为了突破这一瓶颈,DeepFM模型应运而生,它巧妙地结合了深度学习与因子分解的思想,旨在更深层次地挖掘用户行为背后的模式。

文章目录

  • ctr/cvr预估之DeepFM模型
  • 一、什么是DeepFM模型
  • 二、DeepFM模型提出背景
  • 三、DeepFM模型原理
  • 四、DeepFM模型注意事项
  • 五、DeepFM模型的核心参数
  • 六、DeepFM模型实现代码


一、什么是DeepFM模型

DeepFM模型是一种结合了因子分解机(Factorization Machines, FM)和深度神经网络(Deep Neural Network, DNN)的推荐系统模型,它专门设计用于处理点击率(CTR)预估问题。DeepFM模型的核心思想是同时捕获低阶和高阶的特征交互,这在提高模型预测准确性方面非常关键。

二、DeepFM模型提出背景

DeepFM模型的提出背景主要是为了解决传统推荐系统中特征工程复杂度高、难以处理大规模数据等问题。随着大数据时代的到来,推荐系统成为互联网应用中不可或缺的一部分,但同时也面临着新的挑战。传统的推荐系统在特征处理上通常需要大量的手工特征工程,这不仅增加了系统的复杂性,也限制了模型处理大规模稀疏数据的能力。

为了克服这些挑战,研究者们提出了多种深度学习模型,DeepFM便是其中的佼佼者。它是基于Wide & Deep模型的改进和提升,将因子分解机(FM)和深度神经网络(DNN)相结合,通过同时学习低阶和高阶特征交互,实现了强大的推荐功能。DeepFM模型通过FM部分学习低阶特征交互,而DNN部分则负责学习高阶特征交互,两者共享相同的输入特征,从而简化了特征工程。

此外,DeepFM模型的提出也是为了充分利用深度学习在自动特征学习方面的优势,同时保留FM在处理稀疏数据和捕获特征交互方面的高效性。通过这种结合,DeepFM能够自动学习数据中的复杂模式,并提供更加精准的推荐结果。模型的端到端学习能力和不依赖于特征工程的特点,使其在CTR预估领域得到了广泛应用。

三、DeepFM模型原理

DeepFM模型结构
在这里插入图片描述
DeepFM模型由Wide&Deep模型演化而来,在Wide部分使用FM代替了Wide&Deep中的LR模型,有了FM自动构造学习二阶(考虑到时间复杂度原因,通常都是二阶)交叉特征的能力,因此不再需要特征工程。Wide&Deep模型中LR部分依然需要人工的特征交叉,比如【用户已安装的app】与【给用户曝光的app】两个特征做交叉。并且在DeepFM模型中,FM模型与DNN模型共享底层Embedding向量。

  1. 因子分解机(FM)部分

线性交互:FM的第一部分是线性回归部分,它处理所有特征的一阶线性关系。

二阶交互:FM的核心在于它可以有效地计算任意两个特征间的二阶交互,而不需要显式地为每对特征创建交互项。它通过将每个特征映射到一个低维空间来实现,交互项的权重是通过这些低维向量的点积来计算的。这种方法使得模型能够捕捉到特征间的相互作用,同时保持参数数量和计算复杂度相对较低。

  1. 深度神经网络(DNN)部分

高阶交互:深度网络部分能够学习输入特征的高阶交互关系。与传统的多层感知机(MLP)相似,这一部分由多个隐藏层组成,每一层都是前一层输出的非线性变换。

特征嵌入共享:DeepFM的一个关键创新是FM部分和DNN部分共享相同的特征嵌入。这意味着输入到FM和DNN的特征表示是相同的,这样可以有效地减少模型需要学习的参数量,并且使得学习到的特征表示在两个模型部分中都是一致的。

  1. 结合FM和DNN

输出层:DeepFM模型的输出是FM部分和DNN部分的结果的组合。这通常通过将两部分的输出求和或连接后通过一个或多个全连接层来实现。

优化和训练:整个模型可以端到端地进行训练,通常使用如梯度下降的优化算法来最小化预测误差(如二元交叉熵损失)。

四、DeepFM模型注意事项

对于长度不一致的特征,FM模型通过将这些特征转换为固定长度的向量来处理它们之间的交叉项,通常通过特征的嵌入(Embedding)实现。

对于多特征的场景,一般会将各个特征嵌入到相同的维度,然后进行拼接,拼接后的总维度就是各个嵌入维度之和,在FM层处理时,关注的是处理后的嵌入特征,而非原始的输入维度。

FMLayer层的关键在于计算两个部分:一是所有嵌入向量的和的平方,二是所有嵌入向量的平方的和。然后,将前者减去后者,乘以0.5得到交叉项。

五、DeepFM模型的核心参数

DeepFM模型的核心参数

六、DeepFM模型实现代码

DeepFM模型实现代码
欢迎关注我的公众号~

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

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

相关文章

26.高级特性(上)

目录 一、不安全的Rust二、不安全的超能力2.1 概念2.2 解引用裸指针2.3 调用不安全的函数或方法2.3 创建不安全代码的安全抽象2.4 使用extern函数调用外部代码2.5 访问或修改可变静态变量2.6 实现不安全trait2.7 访问联合体中的字段 三、高级trait3.1 关联类型在trait定义中指定…

沙姆镜头标定与重建

沙姆定律( Scheimpflug principle)则可以保证测量平面的物体能够清晰成像, 因此能够起到调整景深区域位置的作用。Scheimpflug 镜头就是根据沙姆定律所设计的一种特殊的镜头,通过机械结构使镜头与相机本体发生一定程度的偏转&…

网络爬虫Xpath开发工具的使用

开发人员在编写网络爬虫程序时若遇到解析网页数据的问题,则需要花费大量的时间编 写与测试路径表达式,以确认是否可以解析出所需要的数据。为帮助开发人员在网页上直接 测试路径表达式是否正确,我们在这里推荐一款比较好用的 XPath 开发工…

vue:响应式原理解析,深入理解vue的响应式系统

一、文章秒读 vue的响应式系统核心有两个,简单描述就是: 1.在数据变化时重新render依赖相关函数(组件)。 2.在vue2和vue3中分别使用Object.defineProperty和Proxy进行对象属性的读写。 数据变化时: 二、什么是响应…

123.网络游戏逆向分析与漏洞攻防-邮件系统数据分析-收邮件功能的完善与优化

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果,代码看不懂是正常的,只要会抄就行,抄着抄着就能懂了 内容…

DDD学习笔记一

DDD的基本原则 (1)保持语言、模型、代码三者一致 语言:开发团队与领域专家沟通使用的自然语言。因为它与设计模型、代码是一致的,所以也称为通用语言。 模型:设计的输出物,是对领域逻辑的精准建模。模型会…

多供应商食品零售商城系统的会员营销设计和实现

在多供应商食品零售商城系统中,会员营销是提升用户粘性和增加销售的重要手段。一个有效的会员营销系统能够帮助平台更好地了解用户需求,提供个性化服务,进而提高用户满意度和忠诚度。本文将详细探讨多供应商食品零售商城系统的会员营销设计与…

LeetCode 算法:二叉树的层序遍历 c++

原题链接🔗:二叉树的层序遍历 难度:中等⭐️⭐️ 题目 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:roo…

工控必备C#

微软的C# 语言? QT 熟了以后,Qt 更方便些 方法Signal Slot 感觉上一样 现在更推荐PyQt 来构建,底层还是Qt C 的那些库,Qt 的开源协议有点狗

前端技术栈学习:Vue2、Vue cli脚手架、ElementUI组件库、Axios

1 基本介绍 (1)Vue 是一个前端框架, 易于构建用户界面 (2)Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或项目整合 (3)支持和其它类库结合使用 (4&#…

Python——Flask开发框架基础使用介绍

目录 Flask简介 安装 Flask 创建一个简单的 Flask 应用 运行你的Flask应用 添加模板和静态文件 使用静态文件 处理表单和数据 使用 Flask 扩展 结论 Flask简介 Flask 是一个轻量级的 Python Web 框架,它以其简洁和灵活的特点广受欢迎。Flask 让开发者能够快…

Hi3861 OpenHarmony嵌入式应用入门--中断按键

本篇讲解gpio的中断使用方式。 硬件原理图如下,与上一篇一样的电路 GPIO API API名称 说明 hi_u32 hi_gpio_init(hi_void); GPIO模块初始化 hi_u32 hi_io_set_pull(hi_io_name id, hi_io_pull val); 设置某个IO上下拉功能。 hi_u32 hi_gpio_set_dir(hi_gpio_…

6-47选择整数计算

整数计算: 用swing组件来实现整数计算,需要对整数计算的值进行校验。 import javax.swing.*; import java.awt.*; import java.awt.event.*;public class IntegerCalculator extends JFrame implements ActionListener {private JCheckBox[] checkBoxe…

【Docker】安装和加速

目录 1.安装 2.了解 docker 信息 3.查询状态 4. 重新启动Docker 1.安装 yum install –y docker 2.了解 docker 信息 cat /etc/redhat-release 3.查询状态 systemctl status docker 4.支持 1.12 的 docker 镜像加速 sudo mkdir -p /etc/docker sudo tee /etc/docke…

照片放大工具Topaz Gigapixel AI for Mac v7.1.2

Topaz Gigapixel AI软件是一款相当高效的PC端图像大小调整工具,更是一款能够为摄影师、设计师以及图像处理爱好者带来革命性体验的强大软件。它凭借先进的深度学习技术,打破了传统图像大小调整的限制,实现了真正意义上的无损放大和图像恢复。…

Matlab|【防骗帖】考虑时空相关性的风电功率预测误差建模与分析

目录 1 主要内容 2 部分程序 3 下载链接 1 主要内容 这个程序《考虑时空相关性的风电功率预测误差建模与分析》画的图片非常漂亮,和原文献基本一致,但是实际上内容并未实现出来,主要就是利用现有的风电预测的数据和结果做了相关的图&#…

CSS|01 CSS简介CSS的3种书写方式注释

CSS简介 什么是CSS CSS(Cascading Style Sheet),层叠样式表 或者 级联样式表,简称样式表。CSS的作用 主要用来给 HTML网页 设置外观或者样式。CSS的语法规则 h1 {属性:属性值}注意:1. CSS代码是由选择器和一对括号…

虚拟机装入kali linux

VMware 首先需要先安装VMware Workstation Pro可以根据这篇文章来下载VMware 下载kali linux Installer Images VS Virtual Machines Installer Images(安装镜像)Virtual Machines(虚拟机) 直接访问硬件,定制内核…

JupyterLab使用指南(七):JupyterLab使用 LaTeX 生成数学公式

在 JupyterLab 中,可以使用 LaTeX 语法生成复杂的数学公式。JupyterLab 内置对 LaTeX 的支持,使得我们可以方便地在 notebook 中编写和展示数学公式。以下是详细的步骤和示例。 1. 使用 LaTeX 生成数学公式 LaTeX 是一种专门用于排版数学公式的语言。J…

springboot+vue+mybatis门窗管理系统+PPT+论文+讲解+售后

如今社会上各行各业,都在用属于自己专用的软件来进行工作,互联网发展到这个时候,人们已经发现离不开了互联网。互联网的发展,离不开一些新的技术,而新技术的产生往往是为了解决现有问题而产生的。针对于仓库信息管理方…