ctr/cvr预估之WideDeep模型
ctr/cvr预估之Wide&Deep模型
在探索点击率(CTR)和转化率(CVR)预估的领域中,我们始终追求的是一种既能捕获数据中的线性关系,又能发现复杂模式的模型。因子分解机(Factorization Machines, FM)模型以其在处理稀疏特征和特征交互方面的优势,赢得了广泛的关注和应用。然而,随着业务需求的不断深化和数据复杂性的增加,FM模型在某些场景下可能难以充分挖掘数据的非线性特性。
在这样的背景下,Wide & Deep 模型应运而生,它是一种创新的机器学习架构,旨在结合线性模型的可解释性和深度神经网络的自动特征学习能力。Wide部分,即广义线性模型(Wide Part),负责学习数据中的一阶特征和线性关系;而Deep部分,即深度神经网络(Deep Part),负责捕捉高阶特征交互和非线性模式。
文章目录
- ctr/cvr预估之Wide&Deep模型
- 一、什么是Wide&Deep模型
- 二、Wide&Deep模型提出背景
- 三、Wide&Deep模型原理
- Wide侧
- Deep侧
- 联合训练(joint training)
- 四、Wide&Deep模型注意事项
- 五、Wide&Deep模型的核心参数以及实现代码
一、什么是Wide&Deep模型
Wide & Deep模型是一种结合了线性模型和深度神经网络的机器学习架构,专为处理推荐系统和广告点击率预估等任务中的高维稀疏数据而设计。该模型包含两个主要部分:Wide部分和Deep部分。
Wide部分基于广义线性模型,能够捕获数据中的一阶特征和线性关系,它通过大量的稀疏特征和特征组合来学习模型的线性信号,这使得模型能够解释和利用已有的领域知识(增强记忆[memorization]能力)。
Deep部分则是一个深度神经网络,能够自动学习数据中的高阶特征交互和非线性模式。通过非线性变换,Deep部分能够捕捉复杂的特征关系,发现数据中的隐含结构(增强泛化[generalization]能力)。
Wide & Deep模型的优势在于它结合了线性模型的可解释性和深度学习的自动特征学习能力,这使得它在处理大规模稀疏数据集时,能够提供更准确的预测和更好的泛化能力。
二、Wide&Deep模型提出背景
在前DeepLearning时代,以Logistic Regression(LR)为代表的广义线性模型在CTR,CVR中得到了广泛的应用,主要原因包括:(1)模型足够简单,相当于不包括隐含层的神经网络;(2)可扩展性强;(3)可解释性强,因为是线性的模型,可以很方便的显现出特征对最终结果的强弱。
虽然线性模型有如上的优点,但同时也存在很多的不足,其中最重要的是无法处理特征的交叉,泛化能力较差。在以CTR为代表的Ranking问题中,需要同时获得记忆(memorization)和泛化(generalization)的能力。记忆可以理解为从历史数据中学习到item或者特征之间的共现关系,泛化则是对上述共现关系的传递,能够对未出现的关系对之间的共现关系进行判定。
逻辑回归(LR)模型具备良好的记忆能力,而深度神经网络(DNN)模型则展现出卓越的泛化能力。因此,结合这两种能力的Wide&Deep模型应运而生,旨在更高效解决Ranking问题。在Wide&Deep模型中,LR模型构建了模型的Wide侧,DNN模型则形成了Deep侧。
三、Wide&Deep模型原理

在Wide&Deep模型中包括两个部分,分别为Wide部分和Deep部分。
Wide侧
Wide侧本质是一个广义的线性回归模型

其中不仅包含了原始的特征,还包括了一些衍生的交叉特征。
Deep侧
Deep侧则是一个典型的DNN模型

在DNN模型中,通常将离散的稀疏特征通过Embedding层转换成连续的稠密特征,代入模型训练。
联合训练(joint training)

同时训练Wide侧模型和Deep侧模型,将两个模型的结果的加权和作为最终的预测结果。
四、Wide&Deep模型注意事项
- 特征选择:Wide部分通常需要手工选择具有业务意义的特征,如ID交叉特征,以利用其记忆能力对特定规则进行建模。Deep部分则可以利用嵌入向量自动学习特征表示,因此需要选择适合深度学习的原始特征。Wide部分通常使用一些高基数的离散特征和它们的交叉特征,以增强模型的记忆能力;而Deep部分则使用连续特征和低基数的离散特征,以提高模型的泛化能力。
- 模型结构设计:在设计模型结构时,应确保Wide部分足够简单,通常是一个单层的线性模型,直接连接输入和输出。Deep部分则可以是一个多层感知机(MLP),用于学习特征间的复杂交互。Deep部分的网络结构设计对模型的效果有重要影响。需要合理设置层数、神经元数目以及激活函数等,以确保模型可以学到有效的非线性特征。
- 正则化和优化:为了避免过拟合,特别是在Deep部分,需要合理使用正则化技术,如L1、L2正则化。同时,选择合适的优化器和学习率也是模型训练的关键。
- 特征交叉:在Wide部分,特征交叉可以显著提升模型性能,但也需要避免过多的特征交叉导致模型复杂度过高。
- 数据预处理:对输入数据进行适当的预处理,如归一化(尤其对于连续型特征)、独热编码等,以提高模型的稳定性和性能。
五、Wide&Deep模型的核心参数以及实现代码
Wide&Deep模型核心参数以及实现代码

相关文章:
ctr/cvr预估之WideDeep模型
ctr/cvr预估之Wide&Deep模型 在探索点击率(CTR)和转化率(CVR)预估的领域中,我们始终追求的是一种既能捕获数据中的线性关系,又能发现复杂模式的模型。因子分解机(Factorization Machines, …...
快速生成基于vue-element的后台管理框架,实现短时间二次开发
你是否遇到过当你想要独立开发一个项目时对反复造轮子的烦扰? 这种流水线的操作实在让人受不了 而vue-element-template很好的帮你解决了这个烦恼 只需克隆下来,改改图标,模块名,甚至样式,就会变成一个全新的自己的项目…...
PCIe 7.0 要来了,一文看懂PCIe发展和技术
PCIe(Peripheral Component Interconnect Express),即外围组件高速串行扩展总线标准,自其诞生以来,已成为计算机硬件中不可或缺的一部分。它以其高速串行通信能力和不断演进的技术规范,满足了日益增长的数据…...
API-事件类型
学习目标: 掌握事件类型 学习内容: 事件类型鼠标事件焦点事件键盘事件文本事件focus选择器案例 事件类型: 鼠标事件: <title>事件类型-鼠标事件</title><style>div {width: 200px;height: 200px;background-c…...
解决poweroff时需要等待其他服务关闭问题
当我们在执行poweroff或者reboot时会出现某个服务需要等待才能关闭系统,这个时候就可以在服务中添加如下: After=shutdown.target Conflicts=reboot.target halt.target poweroff.target Before=shutdown.target reboot.target halt.target poweroff.target具体实例: [Uni…...
ThinkPHP-导入Excel表格(通用版)
一、版本说明 1.PHP8.2、MySQL8.0、ThinkPHP8.0 2.使用前安装phpspreadsheet composer require phpoffice/phpspreadsheet 二、技术说明 因本人采用前后端分离,因此上传文件以及导入表格为分离开发,如无需分离开发则自行合并开发即可。 1.第一步&a…...
毕昇jdk教程
毕昇jdk教程指南链接:Wiki - Gitee.com...
【R语言】地理探测器模拟及分析(Geographical detector)
地理探测器模拟及分析 1. 写在前面2. R语言实现2.1 数据导入2.2 确定数据离散化的最优方法与最优分类2.3 分异及因子探测器(factor detector)2.4 生态探测器(ecological detector)2.5 交互因子探测器(interaction dete…...
深入理解Qt属性系统[Q_PROPERTY]
Qt 属性系统是 Qt 框架中一个非常核心和强大的部分,它提供了一种标准化的方法来访问对象的属性。这一系统不仅使得开发者能够以一致的方式处理各种数据类型,还为动态属性的管理提供了支持,并与 Qt 的元对象系统紧密集成。在这篇文章中&#x…...
【C语言课程设计】员工信息管理系统
员工信息管理系统 在日常的企业管理中,员工信息的管理显得尤为重要。为了提高员工信息管理的效率,我们设计并实现了一个简单的员工信息管理系统。该系统主要使用C语言编写,具备输入、显示、查询、更新(增加、删除、修改ÿ…...
「动态规划」如何求最长递增子序列的长度?
300. 最长递增子序列https://leetcode.cn/problems/longest-increasing-subsequence/description/ 给你一个整数数组nums,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其…...
深度神经网络DNN概念科普
深度神经网络DNN概念科普 深度神经网络(Deep Neural Network, DNN)是机器学习领域中一类具有多层结构的神经网络模型,它能够通过学习数据中的复杂模式来解决非线性问题。下面是对深度神经网络的详细解析: 基本组成部分 输入层&…...
Tomcat WEB站点部署
目录 1、使用war包部署web站点 2、自定义默认网站目录 3、部署开源站点(jspgou商城) 对主机192.168.226.22操作 对主机192.168.226.20操作 上线的代码有两种方式: 第一种方式是直接将程序目录放在webapps目录下面,这种方式…...
IPv6 中 MAC 33:33 的由来
一、33:33 由来 1. RFC9542 - 2024-05-02 Note IANA allocates addresses under the IANA OUI (00-00-5E) as explained in [RFC9542]. Unicast addresses under the IANA OUI start with 00-00-5E, while multicast addresses under the IANA OUI start with 01-00-5E. In t…...
告别手动邮件处理:使用imbox库轻松管理你的收件箱
imbox库简介: imbox是一个强大的Python库,专为与IMAP服务器交互而设计.IMAP(Internet Message Access Protocol)是一种用于电子邮件的标准协议,允许用户在远程服务器上管理邮件.imbox库通过IMAP协议与邮件服务器通信,帮助用户轻松地读取、搜索…...
Ubuntu 18.04 安装 PCL 1.14.1
在进行科研项目时,我们常常需要将 C 和 Python 结合起来编程。然而,每次将 PCL(Point Cloud Library)的内容添加到 CMakeLists.txt 文件中时都会报错。在深入分析后,我们推测可能是当前使用的 PCL 1.8 版本与现有程序不…...
公司logo设计大全怎么找?直接帮你设计logo
公司logo设计大全怎么找?在品牌塑造的过程中,Logo无疑是至关重要的一环。一个优秀的Logo不仅能够有效传达公司的核心理念和品牌形象,还能在消费者心中留下深刻的印象。然而,对于许多初创公司或小型企业来说,制作出适合…...
如何调整C#中数组的大小
前言 数组存储多个相同类型的一种非常常用的数据结构。它长度是固定,也就是数组一旦创建大小就固定了。C# 数组不支持动态长度。那在C#中是否有方法可以调整数组大小呢?本文将通过示例介绍一种调整一维数组大小的方法。 方法 数组实例是从 System.Arr…...
通过言语和非言语检索线索描绘睡眠中的记忆再激活茗创科技茗创科技
摘要 睡眠通过重新激活新形成的记忆痕迹来巩固记忆。研究睡眠中记忆再激活的一种方法是让睡眠中的大脑再次暴露于听觉检索线索(定向记忆再激活范式)。然而,记忆线索的声学特性在多大程度上影响定向记忆再激活的有效性,目前还没有得到充分探索。本研究通…...
MDPI旗下SSCI最新影响因子目录出炉!“水刊“Sustainability表现如何?
本周投稿推荐 SSCI • 1区,4.0-5.0(无需返修,提交可录) EI • 各领域沾边均可(2天录用) CNKI • 7天录用-检索(急录友好) SCI&EI • 4区生物医学类,0.1-0.5&…...
Arduino智能小车避坑指南:从TB6612驱动到HC-05蓝牙,新手最容易搞错的5个硬件连接点
Arduino智能小车避坑实战:5个硬件连接致命细节与示波器级调试方案 刚拿到Arduino套件的新手们,总会在论坛里发出同样的灵魂拷问:"为什么我的小车要么瘫着不动,要么像醉汉一样乱撞?"这个问题背后,…...
SAP传输请求实战指南:从SE10到STMS的完整流程解析
1. SAP传输请求:为什么需要它? 刚接触SAP系统的朋友可能会疑惑:为什么需要传输请求这个功能?简单来说,就像搬家时需要打包物品一样,当我们在开发环境(DEV)完成了某项功能的开发或配置后,需要把这…...
AEC-Q100到AEC-Q200:汽车电子组件认证标准差异与应用场景详解
AEC-Q100到AEC-Q200:汽车电子组件认证标准差异与应用场景详解 当一辆现代汽车驶过零下40度的北极圈,又穿越50度的沙漠高温,其电子系统仍需要保持毫秒级的响应精度——这种极端可靠性背后,是AEC-Q系列认证标准构筑的质量防线。作为…...
Open UI5 源代码解析之740:SearchManager.js
源代码仓库: https://github.com/SAP/openui5 源代码位置:src\sap.f\src\sap\f\SearchManager.js SearchManager.js 深度解析:在 openUI5 中的职责、机制与落地价值 文件定位与总体判断 这个文件定义了一个名为 sap.f.SearchManager 的类。它位于 sap.f 库路径下,却明…...
单片机抢答器项目避坑指南:从按键抖动处理到中断优先级设置
单片机抢答器项目避坑指南:从按键抖动处理到中断优先级设置 在嵌入式系统开发中,抢答器是一个经典的教学项目,但看似简单的功能背后却隐藏着许多技术细节。很多开发者在实现基本功能后,往往会忽略一些关键优化点,导致系…...
Cursor API限制突破架构设计与系统实现方案
Cursor API限制突破架构设计与系统实现方案 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your trial request limit. / T…...
HOOI算法里的‘skip’参数到底在干嘛?深入TensorLy源码讲透Tucker分解迭代过程
HOOI算法中的skip参数机制解析:从数学原理到TensorLy实现 当你在实现高阶正交迭代(HOOI)算法进行Tucker分解时,是否曾被multi_mode_dot函数中那个神秘的skip参数困扰过?这个看似简单的参数背后,实际上隐藏着…...
简单认识了解MSE
了解MSE 的应用场景在传统的网页开发中,前端处理视频的方式非常被动:给 video标签指定一个src,剩下的下载、缓冲、解码工作完全由浏览器底层“黑盒”接管,开发者几乎无法干预。MSE(Media Source Extensions,…...
7yuv调试神器+RGA组合拳:快速定位GStreamer解码数据异常区域
7yuv调试神器与RGA组合拳:高效解决NV12解码数据异常问题 在视频处理开发中,经常会遇到解码后的NV12数据出现异常区域(如绿边、花屏)的情况。这不仅影响视觉效果,还可能导致后续处理算法失效。本文将介绍如何利用7yuv可…...
3D重建效率革命:从单张图片到高质量模型的全流程指南
3D重建效率革命:从单张图片到高质量模型的全流程指南 【免费下载链接】TripoSR 项目地址: https://gitcode.com/GitHub_Trending/tr/TripoSR 在数字内容创作领域,3D建模长期面临两大核心痛点:一方面,传统3D建模软件如Blen…...
