推荐算法之DeepFM

news/2024/5/20 0:27:11 标签: 推荐算法, 机器学习, 人工智能

论文:DeepFM: A Factorization-Machine based Neural Network for CTR Prediction

Github:https://github.com/ChenglongChen/tensorflow-DeepFM

https://github.com/shenweichen/DeepCTR

IJCAI2017

本文将深度神经网络dnn和因式分解机Factorization-Machine(FM)进行结合,同时融合了1阶、2阶这种低阶特征和深度学习的高阶特征,形成最终的DeepFM框架。DeepFM在速度和精度上都优于其他同类模型。对于点击率click-through rate (CTR)的预测在官方benchmark和其他商业数据上都优于其他模型。

主要贡献:

(1)论文融合了DNN和FM,提出新的推荐框架DeepFM。DeepFM融合了DNN的高阶特征和FM的低阶特征。相比于wide & deep推荐模型,DeepFM可以实现端到端的训练。

(2)DeepFM的DNN部分和FM部分共享同一个输入、同一个embedding。相比于其他包含大量人工经验特征的输入,DeepFM具有更小的复杂度。

(3)对于点击率CTR的预测,DeepFM模型在官方数据和商业数据上都优于其他模型。

DeepFM

DeepFM模型是FM模型和DNN模型的组合,将两者的输出结果相加,进行sigmoid激活,输出0-1之间的得分。

FM部分:

二阶特征交互:通过对主流应用市场的研究,我们发现人们经常在用餐时间下载送餐的应用程序,这就表明应用类别和时间戳之间的(阶数-2)交互作用是CTR预测的一个信号。

三阶或者高阶特征交互:我们还发现男性青少年喜欢射击游戏和RPG游戏,这意味着应用类别、用户性别和年龄的(阶数-3)交互是CTR的另一个信号。

根据谷歌的W&D模型的应用, 作者发现同时考虑低阶和高阶的交互特征,比单独考虑其中之一有更多的改进。

 

输入的特征中可以包括稀疏特征(Sparse Features)和连续特征(Dense Features)。其中稀疏特征需要进行Embedding操作,连续特征可以直接输入。FM层会将原始输入进行1阶内积操作,将embedding输入进行2阶内积操作,最终将1阶内积和2阶内积相加。

 

DNN部分:

由于人工特征工程的局限性,很难发现多个特征的之间的相互影响。大部分特征交互都隐藏在数据中,难以先验识别(比如经典的关联规则 "尿布和啤酒 "就是从数据中挖掘出来的,而不是由专家发现的),只能由机器学习自动捕捉,而深度神经网络恰恰可以弥补该缺陷。

DNN部分和FM部分共享同样的输入,在DNN部分,经过多个全连接层的处理,得到最终的输出。

关于输入,包括离散的分类特征域(如性别、地区等)和连续的数值特征域(如年龄等)。分类特征域一般通过one-hot或者multi-hot(如用户的浏览历史)进行处理后作为输入特征;数值特征域可以直接作为输入特征,也可以进行离散化进行one-hot编码后作为输入特征。对于每一个特征域,需要单独的进行Embedding操作,因为每个特征域几乎没有任何的关联,如性别和地区。而数值特征无需进行Embedding。

从field映射到embedding,类似于两个矩阵相乘,field矩阵为1×n,权重矩阵为n×k,相乘得到的embedding为1×k。field中有多少个神经元起作用是没关系的,也可能有多个神经元起作用,比如一个用户既喜欢湖人队又喜欢骑士队。

FNN、PNN、Wide & Deep、DeepFM对比:

 

FNN模型:

FNN模型是基于FM初始化的前向神经网络。会存在3个问题,

第一,embedding层的参数会受FM的过度影响。

第二,由于加入了FM的预训练过程,导致高效性会有影响。

第三,FNN仅仅可以捕捉高阶特征。

PNN模型:

PNN模型根据运算的不同分为IPNN(内积运算), OPNN(外积运算), PNN*(内积+外积)。

内积运算可以通过消除一些神经元进行运算。外积运算则需要把m个k维的特征变化为1个k维的特征。外积运算损失了大量的特征信息,使得结果不稳定,效果不如内积运算。

FNN内积或者外积的输出全部连接到后续的全连接层,会使得运算量加大。FNN的输入都是embedding,没有低层特征的输入。而DeepFM的输入同时包含了低层特征和embedding层的特征。

Wide & Deep模型:

Wide部分的特征输入需要大量人工特征工程。而DeepFM的输入都是模型自动训练学习的。

 

实验结果:

 

 

 

 

 


http://www.niftyadmin.cn/n/298918.html

相关文章

操作系统第二章——进程与线程(下)

东风夜放花千树,更吹落,星如雨 文章目录 2.3.1 进程同步,进程互斥知识总览什么是进程同步什么是进程互斥知识回顾 2.3.2 进程互斥的软件实现方法知识总览如果没有进程互斥单标志法双标志先检查法双标志后检查法Peterson算法知识回顾 2.3.3进程…

Mybatis Plus | 快速入门

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! Mybatis Plus MyBatis-Plus(简称 MP)是一个基于 MyBatis 的增强工具,它对 Mybatis 的基础功能进行了增强,但未做任何改…

OpenCV的highgui模块

Opencv把用于操作系统、文件系统以及摄像机等硬件设备交互的函数纳入到highgui(High-level Graphical User Interface)模块中,我们可以利用该模块方便地打开窗口、显示图像、读出或写入图像相关的文件(图像和视频)、处理简单的鼠标…

leecode 数据库:511. 游戏玩法分析 I

导入数据: Create table If Not Exists Activity (player_id int, device_id int, event_date date, games_played int); Truncate table Activity; insert into Activity (player_id, device_id, event_date, games_played) values (1, 2, 2016-03-01, 5); insert…

技能梳理38@stm32+CC2530+超声波+光敏+oled

技能梳理38stm32CC2530超声波光敏oled 1、项目简介 2、实现逻辑 #主从机使用zigbee通信 #主机oled显示当前停车场位置图 #从机通过超声波和光敏一起检测是否有车 #当某位置车辆进出,在主机上oled进行提示 3、应用场景 #车辆无线检测 #货架商品有无检测 4、核心…

工控机AllInOne——篇5,pve安装istoreos

工控机AllInOne——篇5,pve安装istoreos 1、准备 istoreos img镜像 2、镜像解压 3、镜像上传到pve iso 4、虚拟盘挂载 qm importdisk 10X XXX local-lvm其中10X代表是pve虚拟机序号,XXX代表iso文件上传位置 之后将虚拟盘设为sata 5、启动pve虚拟机…

两大巨头强强联手,为亿万旅行者提供完美旅程

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 这个“五一”你买到票了么? 今年五一火爆程度可谓“盛况空前”,4月28号(放假前一天)上海单日通往全国所有车站的车票售罄,这是115年以来首次出现这种情况。不仅是上…

springboot+jsp商务安全邮箱(源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot商务安全邮箱。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风歌&…