CTR模型:推荐系统DeepFM模型

2023-10-15 13:18
文章标签 系统 推荐 模型 deepfm ctr

本文主要是介绍CTR模型:推荐系统DeepFM模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.简介

理解用户点击行为背后隐藏的交叉特征对CTR预估非常重要。
比如, 人们在用餐时间下载送餐APP,也就是APP类别和时间戳的交叉特征可以作为CTR预估的信号。

由于用户点击行为背后的特征之间各种交互非常复杂,其中的低阶交叉特征和高阶交叉特征都能发挥重要的作用。

下面简单介绍之前的FM模型如何构建交叉特征:

FM模型
在这里插入图片描述
使用向量内积作为成对的特征交互;虽然FM可以对特征高阶交互进行建模,但是复杂度高,一般就二阶特征交互。

FM模型利用低阶特征交叉,DNN模型利用高阶特征交叉,Deep&Wide网络的wide端需要专业的特征工程。

理论上,FM模型可以建模任意高阶的交叉特征,但是代价太大了;
基于CNN的模型倾向捕捉相邻特征之间的交互,而点击率预估任务的相邻特征之间并没有显著的相关性。
基于RNN的模型更适合具有顺序依赖性的数据,不适合点击率预估任务的特征。
PNN和FNN模型,和DNN模型一样,智能捕捉高阶的交叉特征,几乎捕捉不到低阶的交叉特征。

因此,DeepFM模型在2017年被提出。该模型结合了FM的推荐能力和DNN的特征学习能力,综合利用了低阶交叉特征和高阶交叉特征。特点有:
(1)DeepFM集成了FM和DNN,可以对低阶交叉特征和高阶交叉特征建模;
(2)Wide部分和Deep部分共享输入以及Embedding,没有特征工程。

2.DeepFM模型

数据集 ( χ , y ) (\chi, y) (χ,y),X 可以是类别特征(如,性别,地址),也可以是连续特征(如,年龄)。类别特征使用one-hot编码表示,连续特征保持不变或者使用离散化后的one-hot编码向量。
每个样本表示为:(x,y)
其中,

在这里插入图片描述
x 高维且极度稀疏。

2.1 FM 组件

在这里插入图片描述
FM,用于学习一阶特征和二阶交叉特征。
FM由两种操作组成:加法 和 内积。
在这里插入图片描述
加法单元(<w,x>)反映一阶特征的重要性,内积计算表示二阶特征交叉。

2.2 Deep组分

在这里插入图片描述

Deep组件是一个全连接的前馈神经网络,用于学习高阶特征交互。
在这里插入图片描述
在这里插入图片描述

2.3 模型整体
在这里插入图片描述

在这里插入图片描述

2.3 模型比较

FNN:用到FM模型,但仅使用FM模型来初始化FNN,然后进行微调模型,使得FNN的Embedding层参数严重受制于FM模型,降低模型的效果。
此外,FNN仅捕捉高阶特征交互,与此相比,DeepFM不需要预训练,而是端到端的学习低阶交互和高阶特征交互。

PNN:OPNN不如IPNN可靠,因为外积的近似计算丢失了大量信息,使得结果不稳定。
IPNN虽然更可靠,但是由于product层的输出连接到第一个隐层的所有神经元,所以计算复杂度较高。IPNN和OPNN会忽略低阶特征交互。
DeepFM中的product层(FM组件)的输出仅仅连接到输出层(只有1个神经元),计算复杂度很低。

Wide&Deep: Wide & Deep 可以对低阶特征和高阶特征同时建模,但是 wide部分需要人工特征工程。
DeepFM直接处理原始特征。

在这里插入图片描述

在这里插入图片描述

3. 实验结果

(1)数据集
Criteo Display Ads 数据集:用于预测广告点击率的数据集,包含13个整数特征,26个类别特征,其中每个类别特征的取值集合(即:cardinality )都很大。

数据包含 7 天的 11 GB 用户日志(约 4100万条记录)。我们将数据集拆分为 90% 训练集和 10%测试集。

华为公司数据:从华为 App Store 的游戏中心收集连续 7 天的用户点击数据作为训练集,第八天的数据作为测试集。整个训练集+测试集约10亿条记录。

(2)评估指标
评估指标 AUC,logloss 。
(3)参数配置
在这里插入图片描述
模型训练效率:

在这里插入图片描述

效果:
在这里插入图片描述
评估激活函数:relu比tanh要好,但IPNN除外,可能原始是relu导致很强的稀疏性。

在这里插入图片描述
评估dropout:dropout从0.6 到0.9,
在这里插入图片描述
这是,0.9的比例丢弃吗,很高啊?

评估deep组件的深度:
在这里插入图片描述
评估网络的形状:
在这里插入图片描述


参考:

  1. DeepFM: A Factorization-Machine based Neural Network for CTR Prediction;
  2. ctr模型汇总;

这篇关于CTR模型:推荐系统DeepFM模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/217962

相关文章

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Spring Boot spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

Qt QCustomPlot库简介(最新推荐)

《QtQCustomPlot库简介(最新推荐)》QCustomPlot是一款基于Qt的高性能C++绘图库,专为二维数据可视化设计,它具有轻量级、实时处理百万级数据和多图层支持等特点,适用于科学计算、... 目录核心特性概览核心组件解析1.绘图核心 (QCustomPlot类)2.数据容器 (QCPDataC

Java内存分配与JVM参数详解(推荐)

《Java内存分配与JVM参数详解(推荐)》本文详解JVM内存结构与参数调整,涵盖堆分代、元空间、GC选择及优化策略,帮助开发者提升性能、避免内存泄漏,本文给大家介绍Java内存分配与JVM参数详解,... 目录引言JVM内存结构JVM参数概述堆内存分配年轻代与老年代调整堆内存大小调整年轻代与老年代比例元空

深度解析Java DTO(最新推荐)

《深度解析JavaDTO(最新推荐)》DTO(DataTransferObject)是一种用于在不同层(如Controller层、Service层)之间传输数据的对象设计模式,其核心目的是封装数据,... 目录一、什么是DTO?DTO的核心特点:二、为什么需要DTO?(对比Entity)三、实际应用场景解析

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

python 常见数学公式函数使用详解(最新推荐)

《python常见数学公式函数使用详解(最新推荐)》文章介绍了Python的数学计算工具,涵盖内置函数、math/cmath标准库及numpy/scipy/sympy第三方库,支持从基础算术到复杂数... 目录python 数学公式与函数大全1. 基本数学运算1.1 算术运算1.2 分数与小数2. 数学函数

Python Pillow 库详解文档(最新推荐)

《PythonPillow库详解文档(最新推荐)》Pillow是Python中最流行的图像处理库,它是PythonImagingLibrary(PIL)的现代分支和继承者,本文给大家介绍Pytho... 目录python Pillow 库详解文档简介安装核心模块架构Image 模块 - 核心图像处理基本导入