网易首页 > 网易号 > 正文 申请入驻

一个超好用的CTR开源项目FuxiCTR

0
分享至

本篇从理论到实践介绍了华为CTR开源项目FuxiCTR。首先是背景介绍,然后重点详解开源项目FuxiCTR,包括项目架构、支持的主流CTR算法以及在公共数据集上的效果和代码处理流程及源码介绍;最后分别简单介绍了传统CTR模型发展进程和深度学习CTR模型发展进程。对CTR模型感兴趣并希望快速应用到项目实践的小伙伴可以一起沟通交流。

一、背景介绍

最近在做CTR模型相关项目,网上查阅了很多资料,比较靠谱的是华为论文《Open Benchmarking for Click-Through Rate Prediction》以及对应的开源github项目FuxiCTR。论文做了一个CTR模型的benchmark,在公共数据集Criteo和Avazu对比了主流CTR模型的效果。通过这个开源项目我们可以了解主流CTR模型的效果,同时很方便的学习和使用各种主流CTR模型,对于又好又快的构建线上CTR模型有很大的帮助。

二、详解开源项目FuxiCTR
2.1 FuxiCTR项目架构

FuxiCTR项目github地址如下:
https://github.com/xue-pai/FuxiCTR

项目整体架构如下图所示,其中features.py是特征处理模块,models和layers主要负责模型构建,models支持目前大多数主流的CTR模型。下面是FuxiCTR项目整体架构图:

图1 FuxiCTR项目整体架构2.2 FuxiCTR支持主流的CTR算法以及在公共数据集效果

论文在公共数据集Criteo和Avazu对比了主流CTR模型的效果,下面是Criteo数据集上的效果展示图:

图2 Criteo数据集上的效果展示图

可以看出Criteo数据集上表现效果较好的是Wide&Deep、IPNN、DeepFM、DCN、xDeepFM和ONN。接下来是Avazu数据集上的效果展示图:

图3 Avazu数据集上的效果展示图

可以看出Avazu数据集上表现效果较好的是IPNN、HFM+、FGCNN、ONN和FiBiNET。

结合Criteo数据集和Avazu数据集模型效果来看,LR模型作为早期主流的CTR模型效果会差于其他CTR模型。同时我们还发现同一个模型在不同数据集上的表现效果差异较大,选择适合自己任务的模型才是最重要的。实际工作中想又快又好的上线CTR项目,一个不错的建议就是可以优先尝试那些在公共数据集上表现效果好的CTR模型,毕竟那么多模型想挨个跑一遍是需要很多时间成本和人力研发成本的。

2.3 代码处理流程及源码介绍

将FuxiCTR项目通过github下载到本地,项目是基于python3.6和pytorch构建,下面是FuxiCTR项目相关依赖的包:

图4 FuxiCTR项目相关依赖的包

FuxiCTR项目提供了很多demo示例,这里我们以DeepFM_with_config.py介绍CTR模型构建流程:

图5 CTR模型流程图

整体来看构建CTR模型需要以下四个流程:

S1:配置数据集和模型相关信息

数据集相关信息配置在dataset_config.yaml文件中,主要包括训练集、验证集和测试集文件位置以及数据存储格式,还包括特征列和标签列等信息。下面是数据集相关配置信息:

图6 数据集相关信息

模型相关信息配置在model_config.yaml文件中,主要包括模型名、损失函数、评估metrics、优化器等等。下面是DeepFM模型相关配置项:

图7 DeepFM模型相关信息

FuxiCTR项目封装的非常好,仅通过如下几行代码即可完成配置文件导入:

config_dir = 'demo_config'
experiment_id = 'DeepFM_test'
params = load_config(config_dir,experiment_id)

S2:构建特征处理器并处理数据

这里先看下用户点击广告示例数据,里面包括用户user在哪个时间点击了某个广告ad、广告ad相关信息、用户user相关信息以及用户点击广告序列等信息,下面是示例数据:

图8 用户点击广告示例数据

对于实际业务中的CTR模型来说,挖掘更多更有效的特征有时候比模型结构更有效。这里特征包括类别特征、连续值特征、序列特征和时间类特征等。

类别特征比较容易理解,分成稠密特征和稀疏特征。比如用户user性别主要男/女/其他三类,类别数目比较少,这类属于稠密特征,稠密特征一般通过one-hot编码处理。比如广告ad所属的广告组特征类别数目非常大,通常达到几十万种,这类属于稀疏特征,如果直接通过one-hot编码可能一个特征就达到几十万维,直接将这种高维稀疏特征放到模型中去训练使得计算代价非常大。处理稀疏特征常用的做法是通过embedding技术将高维稀疏向量转化成低维稠密向量。连续值特征比如价格price等,通常的处理办法是进行分桶等操作。序列特征比如用户历史点击广告序列click_sequence等,通常的处理办法是进行embedding后sum/avg操作。时间类特征可以抽取出周几、当年的第几天、当月的第几天、当季度的第几天、时分秒等等特征。

构建特征处理器并处理数据代码如下所示:

# step2:Set up feature encoder
feature_encoder = FeatureEncoder(**params)
feature_encoder.fit(train_data=params['train_data'],
min_categr_count=params['min_categr_count'])

# Build train/validation/test datagenerators
train_gen, valid_gen, test_gen =data_generator(feature_encoder,
train_data=params['train_data'],
valid_data=params['valid_data'],
test_data=params['test_data'],
batch_size=params['batch_size'],
shuffle=params['shuffle'],
use_hdf5=params['use_hdf5'])

S3:模型构建和训练

FuxiCTR项目中模型构建也封装的很好,模型和网络层主要封装在fuxictr/pytorch目录下,其中layers主要包括抽象出来的各种层,models主要包括当前主流的CTR模型。下图中右边部分是DeepFM源码,通俗易懂非常友好:

图9 FuxiCTR项目中的模型封装

模型构建和训练代码如下所示:

# step3:Build a DeepFM model and trainmodel
model = DeepFM(feature_encoder.feature_map,**params)
model.fit_generator(train_gen,validation_data=valid_gen, epochs=params['epochs'],
verbose=params['verbose'])

S4:模型导入并评估效果

最后一个流程是导入最优模型并在验证集和测试集上评估效果,代码如下所示:

# step4:Reloading weights of the bestcheckpoint,Evalution on validation and test
model.load_weights(model.checkpoint)
model.evaluate_generator(valid_gen)
model.evaluate_generator(test_gen)


三、CTR 模型发展进程

上面了解了华为开源项目FuxiCTR,这里还需要对CTR模型的发展进程有详细的了解,这里主要从传统CTR模型和深度学习CTR模型进行简单的介绍,后续会进行深入的学习并整理成系列文章和大家分享。

3.1 传统CTR模型发展进程

图10 传统CTR模型发展进程

传统CTR模型发展进程可以参考王喆写的这篇文章《前深度学习时代CTR预估模型的演化之路》。首先是LR模型,作为CTR模型的核心和基础,2012年之前各大中小公司主流的CTR模型主要是LR模型,主要流行的原因有三个:有数学形式和含义上的支撑、符合人类直觉并具有可解释性、线上工程化友好。然后是POLY2模型,因为LR模型只能使用单一特征,无法使用高阶特征,所以模型表达能力有限。

POLY2模型可以进行特征的暴力组合从而开启了CTR模型特征交叉的新时代;2010年德国康斯坦茨大学提出了FM(Factorization Machine)模型,通过引入特征隐向量降低FM模型训练复杂度,同时可以很好的解决数据稀疏性的问题;

接着2015年基于FM提出了FFM(Field-aware Factorization Machine)模型,通过引入Field-aware特征域概念从而使模型的表达能力进一步提升;2014年Facebook提出了GBDT+LR组合模型的解决方案,通过GBDT自动进行特征筛选和组合从而生成新的离散特征向量,再把特征向量作为LR模型的输入进行CTR预估,开启了特征工程模型化的开端;2010年google提出了FTRL模型,主要通过在线实时训练从而提升模型效果;

最后2017年阿里的MLR模型公之于众(实际上MLR在2012年就是阿里主流的CTR模型),MLR模型非常适合工业级的广告和推荐等大规模稀疏数据场景问题,通过端到端的非线性学习从而表达能力很强,同时因为引入了L1和L2范数使得模型具有较高的稀疏度,模型的学习和在线预测性能都很好。

3.2 深度学习CTR模型发展进程

图11 深度学习CTR模型发展进程

深度学习CTR模型发展进程可以参考王喆写的这篇文章《谷歌、阿里、微软等10大深度学习CTR模型最全演化图谱【推荐、广告、搜索领域】》。首先是2016年微软提出的Deep Crossing模型,这是深度学习领域最有代表性的CTR模型,可以说开启了CTR模型在深度学习的新时代。Deep Crossing模型涵盖了深度学习CTR模型的主要元素,先通过embedding层将稀疏特征转化为稠密特征,然后通过concat操作将特征向量拼接起来,再通过多层神经网络进行特征的组合和转换,最后用scoring layer完成CTR计算;

然后2016年提出了FNN模型,主要是用FM的隐向量完成embedding的初始化;接着2016年提出了PNN模型,在embedding层和全连接层添加了product layer从而增强了模型表征不同数据模型的能力;

接着2016年谷歌提出了Wide&Deep模型,把单输入层的Wide部分和经过多层感知机的Deep部分连接起来一起输出最终的输出层,其中Wide部分主要作用是让模型具有记忆性,Deep部分主要作用是让模型具有泛化性,最后利用LR输出层将Wide部分和Deep部分组合形成统一的模型,实现记忆能力和泛化能力的综合权衡。

下面分别是基于Wide&Deep模型对wide部分和deep部分的改进。对Wide部分的改进主要是DeepFM和DCN模型。2017年华为提出了DeepFM模型,相比于Wide&Deep的改进之处在于用FM替换掉了原来的Wide部分,加强了浅层网络部分特征组合的能力。2017年google提出了DCN(Deep&CrossNetwork), 对Wide&Deep的改进思路是使用Cross网络替代了原来的Wide部分,通过设计Cross网络来增加特征之间的交互力度,使用多层cross layer对输入向量进行特征交叉。

对Deep部分的改进主要是NFM和AFM模型。2017年提出了NFM(Neural Factorization Machines)模型,NFM模型用一个带Bi-interaction Pooling层的DNN替换了FM的特征交叉部分,形成了独特的Wide&Deep架构。2017年提出了AFM(Attentional Factorization Machines)模型,将NLP领域的Attention机制引入到CTR预估中,实现了Attention机制的FM,从而可以根据样本特征调整特征权重;

最后是2018年阿里的DIN模型,阿里将Attention机制引入到深度学习网络,关于DIN模型的详细介绍小伙伴可以看下我之前写过的一篇文章《广告行业中那些趣事系列12:推荐系统中融合注意力机制的DIN模型》,DIN模型实质是解决推荐领域中用户历史行为中包含大量的用户兴趣信息,但是只有一小部分用户兴趣信息会最终影响用户点击行为的问题。后来阿里提出了DIEN模型,作为DIN模型的优化版本,引入序列模型AUGRU模拟用户兴趣进化过程进一步提升了模型效果。

四、总结与反思

本篇从理论到实践介绍了华为CTR开源项目FuxiCTR。首先是背景介绍,然后重点详解开源项目FuxiCTR,包括项目架构、支持的主流CTR算法以及在公共数据集上的效果和代码处理流程及源码介绍;最后分别简单介绍了传统CTR模型发展进程和深度学习CTR模型发展进程。对CTR模型感兴趣并希望快速应用到项目实践的小伙伴可以一起沟通交流。

作者:数据拾光者

Illustration b y Ivan Haidutski from i cons8

-The End-

扫码观看!

本周上新!

关于我“门”

将门是一家以专注于发掘、加速及投资技术驱动型创业公司的新型创投机构,旗下涵盖将门创新服务将门技术社群以及将门创投基金

将门成立于2015年底,创始团队由微软创投在中国的创始团队原班人马构建而成,曾为微软优选和深度孵化了126家创新的技术型创业公司。

如果您是技术领域的初创企业,不仅想获得投资,还希望获得一系列持续性、有价值的投后服务,欢迎发送或者推荐项目给我“门”:

bp@thejiangmen.com

点击右上角,把文章分享到朋友圈

⤵一键送你进入TechBeat快乐星球

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
新尿酸标准已调整,不再420μmol/L,高尿酸者,早知早干预

新尿酸标准已调整,不再420μmol/L,高尿酸者,早知早干预

路医生健康科普
2026-04-12 08:30:07
A50预警机接连被击落:工业垃圾还是最强王者?

A50预警机接连被击落:工业垃圾还是最强王者?

让生活充满温暖
2026-04-02 11:53:07
分手的节奏,莫兰特缺席灰熊队赛季总结面谈,交易传闻愈演愈烈

分手的节奏,莫兰特缺席灰熊队赛季总结面谈,交易传闻愈演愈烈

好火子
2026-04-14 00:34:36
辽宁险胜5分!深圳大胜13分,山西输13分,新疆败2分,排名大变

辽宁险胜5分!深圳大胜13分,山西输13分,新疆败2分,排名大变

老吴说体育
2026-04-13 21:46:49
6点吃晚饭是错的?医生建议:过了70岁晚饭尽量做到这5点

6点吃晚饭是错的?医生建议:过了70岁晚饭尽量做到这5点

白话电影院
2026-04-10 14:44:50
没军人气质别演旅长,看了观众对王阳的评价,陈道明的话有人信了

没军人气质别演旅长,看了观众对王阳的评价,陈道明的话有人信了

陈述影视
2026-04-11 00:09:56
所有退休人员注意:收到这条短信,务必抓紧解决!

所有退休人员注意:收到这条短信,务必抓紧解决!

笔墨V
2026-04-13 15:56:59
尸骨未寒!陈丽华刚走,迟重瑞被当众挑毛病,众目睽睽下颜面扫地

尸骨未寒!陈丽华刚走,迟重瑞被当众挑毛病,众目睽睽下颜面扫地

一盅情怀
2026-04-12 15:22:24
从哪里来回哪里去,200万日本侨民对中国的鸠占鹊巢最终失败

从哪里来回哪里去,200万日本侨民对中国的鸠占鹊巢最终失败

新一说史
2026-04-14 01:31:54
16岁就是人间尤物,4年换19个男人,找老实人接盘后,变买菜妈妈

16岁就是人间尤物,4年换19个男人,找老实人接盘后,变买菜妈妈

一盅情怀
2026-03-28 15:38:13
韩国为啥给人吃不起肉的感觉?网友:韩国人均吃肉比中国多

韩国为啥给人吃不起肉的感觉?网友:韩国人均吃肉比中国多

带你感受人间冷暖
2026-04-12 00:15:10
中纪委通报,医院主任受贿

中纪委通报,医院主任受贿

赛柏蓝
2026-04-13 19:59:43
王石又又又又被抓了?

王石又又又又被抓了?

笔杆论道
2026-04-13 09:53:47
美军13日开始封锁伊朗港口,国际油价飙升|盘中速报

美军13日开始封锁伊朗港口,国际油价飙升|盘中速报

新浪财经
2026-04-13 07:18:31
他发明一道菜在美国一年卖52163吨,年入203亿,却称绝不进入中国

他发明一道菜在美国一年卖52163吨,年入203亿,却称绝不进入中国

杰丝聊古今
2026-04-09 23:44:51
人不会无缘无故患上糖尿病!研究得出:患糖尿病,多半爱干这5事

人不会无缘无故患上糖尿病!研究得出:患糖尿病,多半爱干这5事

路医生健康科普
2026-04-13 17:05:03
宋喆直播卖枣笑塌全网!百万流量零成交,满屏王宝强弹幕扎心到爆

宋喆直播卖枣笑塌全网!百万流量零成交,满屏王宝强弹幕扎心到爆

誮惜颜a
2026-01-13 01:12:10
别存侥幸!摩托车抓拍全面升级,天眼全覆盖,违规必罚

别存侥幸!摩托车抓拍全面升级,天眼全覆盖,违规必罚

我不叫阿哏
2026-04-14 00:39:29
A股:传来两个信息,明天,4月14日,行情要变化了!

A股:传来两个信息,明天,4月14日,行情要变化了!

明心
2026-04-13 16:09:29
322名机关事业单位干部因不胜任现职被调整

322名机关事业单位干部因不胜任现职被调整

细说职场
2026-04-10 14:10:40
2026-04-14 02:32:49
将门创投 incentive-icons
将门创投
加速及投资技术驱动型初创企业
2340文章数 596关注度
往期回顾 全部

科技要闻

"抄作业"近四年,马斯克版微信周五上线

头条要闻

上海女子2个月内结2次婚 生下的孩子却是第3个男人的

头条要闻

上海女子2个月内结2次婚 生下的孩子却是第3个男人的

体育要闻

一支球队不够烂,也是一种悲哀

娱乐要闻

初代“跑男团”合体,邓超、鹿晗缺席

财经要闻

谈判未完全关闭?3国力促美伊重启谈判

汽车要闻

不止命名更纯粹 领克10/10+要做纯电操控新王

态度原创

健康
教育
旅游
数码
本地

干细胞抗衰4大误区,90%的人都中招

教育要闻

老师们活的通透的几大标准,看看你做到了吗?

旅游要闻

“一站式”赏花

数码要闻

壹号本ONEXStation i1迷你主机发售,18999元

本地新闻

12吨巧克力有难,全网化身超级侦探添乱

无障碍浏览 进入关怀版