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模型核心参数以及实现代码
欢迎关注公众号

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

张量在人工智能中的解释?

张量在人工智能中的解释? 张量是一种多维数组,它可以看作是向量和矩阵的推广。在人工智能领域,张量被用作数据的基本表示形式,尤其在深度学习中扮演着核心角色。张量的多维性允许它们表示复杂的数据结构和关系,而其可…

iOS之如何创建.framework静态库

番外:想要查看如何创建.a静态库可前往看我iOS之如何创建.a静态库-CSDN博客这篇文章。 一、创建framework项目 创建framework工程要选择iOS --> Cocoa Touch Framework输入项目名称PrintFramework也是编译生成的framework的名称。framework的名称也可以以后在项目…

不翻墙安装yolov8环境下的RT-DETR并实现PCB表面缺陷检测

目录 一、新建conda环境二、安装yolov8环境1.克隆安装包2.安装依赖包3.测试模型 任务2:基于RT-DETR实现PKU-PCB表面缺陷检测数据准备 数据增强测试 总结 一、新建conda环境 创建并激活conda环境: 在conda创建一个名为yolov8的新环境,并在其中…

React尚硅谷115-126(setState、Hooks、Fragment、context、组件优化、renderprops

122,context 只能用value传,可以传对象,字符串 一种组件间通信方式, 常用于【祖组件】与【后代组件】间通信 使用: 创建Context容器对象: const XxxContext React.createContext() 渲染子组时,外面包…

SpringBoot的Web开发支持【超详细【一篇搞定】果断收藏系列】

Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println(“MyInterceptor.afterCompletion”); } } 使用Java的形式配置拦截器的拦截路径 在WebMvcConfig…

零门槛用AI,302.AI让人工智能变得简单易用

当下人工智能火爆,提到AI,几乎每个人都能说上几句,但是你真的会使用AI吗? 当涉及到如何实际使用AI时,许多人可能会觉得它太过高深莫测,从而产生一种距离感,不知如何开始。我和大家也一样&#x…

Apple - Game Center Programming Guide

本文翻译整理自:Game Center Programming Guide( Updated: 2016-06-13 https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/GameKit_Guide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40008304 文章…

jemeter基本使用

后端关验签,设置请求头编码和token 配置编码和token

【分布式事务】Seata AT实战

目录 Seata 介绍 Seata 术语 Seata AT 模式 介绍 实战(nacos注册中心,db存储) 部署 Seata 实现 RM 实现 TM 可能遇到的问题 1. Seata 部署成功,服务启动成功,全局事务不生效 2. 服务启动报错 can not get …

c++分隔字符串

可以使用getline函数。 有两个版本: 至于为什么可以使用getline函数返回值作为while的判断条件,cprimer中表述如下:

[MySql]两阶段提交

文章目录 什么是binlog使用binlog进行恢复的流程 什么是redolog缓冲池redologredolog结构 两阶段提交 什么是binlog binlog是二进制格式的文件,用于记录用户对数据库的修改,可以作用于主从复制过程中数据同步以及基于时间点的恢复(PITR&…

Docker(六)-本地镜像发布到私有库

1.下载镜像Docker Registry 用于搭建私人版本Docker Hub docker pull registry2.运行私有库Registry 运行私有库Registry,相当于本地有个私有Docker hubdocker run -d -p hostPort:containerPort -v 【宿主机目录】:【容器目录】 --privilegedtrue 【私有库镜像】…

C++使用Poco库封装一个FTP客户端类

0x00 Poco库中 Poco::Net::FTPClientSession Poco库中FTP客户端类是 Poco::Net::FTPClientSession , 该类的接口比较简单。 上传文件接口: beginUpload() , endUpload() 下载文件接口: beginDownload() , endDownload() 0x01 FTPCli类说明 FTPCli类…

若依-前后端分离项目学习

第一天(6.24) 具体参考视频 b站 楠哥教你学Java 【【开源项目学习】若依前后端分离版,通俗易懂,快速上手】 https://www.bilibili.com/video/BV1HT4y1d7oA/?share_sourcecopy_web&vd_sourcecd9334b72b49da3614a4257…

“湖北建筑安全员C证考试合格证书不能打印?可能是你犯了这个错误!“

"湖北建筑安全员C证考试合格证书不能打印?可能是你犯了这个错误!" 湖北建筑安全员C证考试合格证书不能打印咋回事 目前建筑安全员C证都是全国联网的,在湖北考的建筑安全员C证在外省也可以正常使用or调转。全国工程质量安全监管信息…

【扫雷游戏】C语言详解

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…

从基础到高级:视频直播美颜SDK的开发教学

本篇文章,小编将从基础到高级,详细讲解视频直播美颜SDK的开发过程,帮助开发者更好地掌握这一技术。 一、基础知识 什么是视频直播美颜SDK? 视频直播美颜SDK包含了一系列用于视频处理的功能模块,特别是美颜效果的实现…

封装vuetify3中v-time-picker组件,并解决使用时分秒类型只能在修改秒之后v-model才会同步更新的问题

目前时间组件还属于实验室组件&#xff0c;要使用需要单独引入&#xff0c;具体使用方式查看官网 创建公共时间选择器组件 common-time-pickers.vue 子组件页面 <template><div><v-dialog v-model"props.timeItem.isShow" activator"parent&q…

对于GPT-5的些许期待

目录 1.概述 2.GPT-5技术突破预测 3.智能系统人类协作 3.1. 辅助决策 3.2. 增强创造力 3.3. 处理复杂任务 3.4.人机协同的未来图景 4.迎接AI技术变革策略 4.1.教育方面 4.2.职业发展方面 4.3.政策制定方面 4.4.人才与技能培养 1.概述 GPT-5作为下一代大语言模型&a…

ONLYOFFICE 8.1全新升级,智能办公体验再升级,引领未来工作新潮流!

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀ONLYOFFICE 8.1 &#x1f4d2;1. ONLYOFFICE简介&#x1f4d9;2. ONLYOFFICE特点&#x1f4d5;3. ONLYOFFICE功能⛰️PDF 文件编辑器&#x1…