ctr/cvr预估之WideDeep模型

news2024/12/25 6:22:12

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.coloradmin.cn/o/1857858.html

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

相关文章

6.21长难句打卡

Students also benefit from learning something about coding before they get to college, where introductory computer-science classes are packed to the brim, which can drive the less-experienced or -determined students away. 1.brim v.充满 n.边缘 在上大学之前…

Nature重磅:揭开睡眠不足为什么会损害记忆力

我们的记忆力会在睡眠期间得到增强,海马体是大脑的记忆中心,而海马体尖波涟漪(sharp-wave ripple,SWR)期间觉醒体验的激活和重放被认为是记忆力得到增强的关键。睡眠不足会损害记忆力,然而,我们…

四川赤橙宏海商务信息咨询有限公司电商服务正规吗?

在数字时代的浪潮下,电商行业正以前所未有的速度蓬勃发展。而在这个风起云涌的电商江湖中,四川赤橙宏海商务信息咨询有限公司以其独特的抖音电商服务策略,迅速崭露头角,成为业界翘楚。今天,我们就来聊聊这家公司如何凭…

matplotlib赛博朋克绘图风格介绍(mplcyberpunk)

matplotlib绘图风格 mplcyberpunk mplcyberpunk是一个matplotlib绘图风格的扩展包,利用这个python包,可以轻易的创建出精美的赛博朋克风格图表,方法介绍: import matplotlib.pyplot as plt import mplcyberpunkplt.style.use("cyberpunk")add_glow_effects #使图形…

SQL Server - ROLLUP、GROUPING、CUBE、GROUPING SET

文章目录 SQL Server - ROLLUP、GROUPING、CUBE、GROUPING SETROLLUP函数GROUPING函数GROUPING SET函数CUBE函数网上例子 写在前面:如果我们想要对分组之后的数据进行类似小计的计算,那么就需要使用到下面的函数 SQL Server - ROLLUP、GROUPING、CUBE、G…

解决bat脚本输出中文乱码

2024.06.24 测试,使用方法(1)已解决问题。 原文连接 一、乱码原因 Windows的cmd.exe默认编码格式为ANSI。简体中文版的Windows, 其ANSI对应微软Codepage为cp936 如果你的bat文件是UTF-8编码的, 或者是是其他Codepage下创建的, 当bat文件编码…

C语言基础——函数(2)

ʕ • ᴥ • ʔ づ♡ど 🎉 欢迎点赞支持🎉 文章目录 前言 一、return语句 二、数组做函数参数 三、嵌套调用和链式访问 3.1 嵌套调用 3.2 链式访问 四、函数声明和定义 4.1 单个文件 4.2 多个文件 总结 前言 大家好啊,继我们上一…

快速鲁棒的 ICP (Fast and Robust Iterative Closest Point)

迭代最近点(Iterative Closet Point,ICP)算法及其变体是两个点集之间刚性配准的基本技术,在机器人技术和三维重建等领域有着广泛的应用。ICP的主要缺点是:收敛速度慢,以及对异常值、缺失数据和部分重叠的敏…

【强化学习的数学原理】课程笔记--1(基本概念,贝尔曼公式)

目录 基本概念State, Action, State transitionPolicy, Reward, Trajectory, Discount ReturnEpisodeMarkov decision process 贝尔曼公式推导确定形式的贝尔曼公式推导一般形式的贝尔曼公式State ValueAction Value 一些例子贝尔曼公式的 Matric-vector form贝尔曼公式的解析解…

图片多级缓存加载流程

图片多级缓存加载流程通常包括三个主要级别:内存缓存、本地缓存和网络缓存。以下是详细的加载流程: 1. 内存缓存(一级缓存) 流程: 当应用需要加载一张图片时,首先会检查内存缓存中是否存在该图片。 如果…

【Linux进阶】UNIX体系结构分解——操作系统,内核,shell

1.什么是操作系统? 从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境。我们通常将这种软件称为内核(kerel),因为它相对较小,而且位于环境的核心。 从广义上…

智能屏幕人体雷达感应开关模块,飞睿智能低功耗毫米波雷达技术,让冰箱更节能

在智能家居日益普及的今天,各种创新技术层出不穷,极大地提升了人们的生活品质。其中,人体雷达感应开关模块作为一种创新的传感器技术,正在逐步改变我们对家电设备的传统认知。本文将深入探讨飞睿智能人体雷达感应开关中的毫米波雷…

【Golang】Steam 创意工坊 Mod 文件夹批量重命名

本文将介绍一个使用Go语言编写的脚本,其主要功能是解析XML文件并基于解析结果重命名文件夹。这个脚本适用于需要对文件夹进行批量重命名,并且重命名规则依赖于XML文件内容的情况。 脚本功能概述 Steam创意工坊下载的Mod文件夹批量重命名为id名称 运行前…

MySQL-java连接MySQL数据库+JDBC的使用

目录 1.准备所需要资源 2.导入驱动包 3.连接数据库步骤 首先在MySQL中创建好数据库和表 代码实现连接数据库 1.准备所需要资源 1.mysql和驱动包 我用的是5.7的mysql和5.1.49的驱动包,链接放在网盘里,需要的自取 链接:https://pan.bai…

K8S安装metrics-server

K8S安装metrics-server 使用kubeadm安装完成的集群,运行kubectl top node等命令式,报错:error: Metrics API not available。这是因为缺少metrics-server。 [rootk8s-master1 ~]# kubectl top node error: Metrics API not available简介 …

k8s集群搭建及对一些组件的简单理解

背景 k8s的学习环境(用kubeadm方式搭建),我也搭过几次了,但都有点问题。 要么在云服务器上弄,这个的问题是就只有一台轻量服务器,只能搭个单节点的;后来买了一台便宜的,所以就有了两…

SpringBoot使用滑动窗口限流防止用户重复提交(自定义注解实现)

在你的项目中,有没有遇到用户重复提交的场景,即当用户因为网络延迟等情况把已经提交过一次的东西再次进行了提价,本篇文章将向各位介绍使用滑动窗口限流的方式来防止用户重复提交,并通过我们的自定义注解来进行封装功能。 首先&a…

网络基础-协议

一、ARP 通过IP得到Mac 首先会查看缓存的arp表中是否有相应的IP和Mac对应关系,如果有直接进行包封装。如果没有则进行广播当对应的地址就收到广播包后会根据arp中的源地址进行单播返回相应的IP和Mac对应关系。 arp -a 查看现有的arp缓存 二、RARP反向地址解析 通过…

git上传本地项目及更新项目

1、注册GitHub账号和下载git 2、在GitHub上新建一个仓库,点击号——>New repository,给仓库起一个名字,点击Create repository 3、进入要上传的项目中,右键点击git back here,命令行输入git init初始化&#xff0c…

《Nest系列 - 3. 掌握常见Nest 装饰器,奠定坚实基础!!!!!!》

nest 一个核心就是依赖注入,而中的大部分功能都是通过装饰器来实现的,那什么是装饰器呢? 就是一个 xxx ,诸如 Module,controller, Get, Post 那这样有什么好处呢? 可以把他理解成一个方法,在不改…