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

一个超好用的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.

相关推荐
热点推荐
马杜罗已被从委内瑞拉历史上“抹去”!委代总统与美国有“杀父之仇”,曾说“永远不会成为任何国家殖民地”;鲁比奥已成为委事实上的总督

马杜罗已被从委内瑞拉历史上“抹去”!委代总统与美国有“杀父之仇”,曾说“永远不会成为任何国家殖民地”;鲁比奥已成为委事实上的总督

大风新闻
2026-08-20 20:39:08
炸裂!日本妻子拍AV挽救婚姻,瞒夫出道老公崩溃,如今丈夫成粉丝

炸裂!日本妻子拍AV挽救婚姻,瞒夫出道老公崩溃,如今丈夫成粉丝

悠悠说世界
2026-08-17 13:48:27
被立案调查9天,53岁郭德纲再迎噩耗

被立案调查9天,53岁郭德纲再迎噩耗

叨唠
2026-08-21 02:22:23
巴基斯坦博主看完《欢迎来龙餐馆》直言 “不适”,她的不适,到底从何而来?

巴基斯坦博主看完《欢迎来龙餐馆》直言 “不适”,她的不适,到底从何而来?

海藻娱乐
2026-08-19 09:43:05
雷来了,昨晚20股利空,终止重组、炒作风险、异常波动、股份减持

雷来了,昨晚20股利空,终止重组、炒作风险、异常波动、股份减持

财经智多星
2026-08-21 07:10:33
太恶毒!华人租客设局陷害房东:先冒名放弃绿卡,再冒名投票举报,害其被列入遣返程序

太恶毒!华人租客设局陷害房东:先冒名放弃绿卡,再冒名投票举报,害其被列入遣返程序

大洛杉矶LA
2026-08-20 05:52:21
上海优化房地产政策措施,精准施策促进合理购房需求积极释放

上海优化房地产政策措施,精准施策促进合理购房需求积极释放

界面新闻
2026-08-20 12:51:19
“我没疯,是整个AI圈疯了!”强化学习之父:没有任何动物靠监督学习长大,大模型上线后根本没在学习

“我没疯,是整个AI圈疯了!”强化学习之父:没有任何动物靠监督学习长大,大模型上线后根本没在学习

AI科技大本营
2026-08-20 14:38:39
华为推出全新阔屏手机,折叠屏居然被取消了!

华为推出全新阔屏手机,折叠屏居然被取消了!

XCiOS俱乐部
2026-08-20 19:31:42
彻底撕破脸皮!原配再爆男方父亲猛料,上梁不正下梁歪全家颜面无存

彻底撕破脸皮!原配再爆男方父亲猛料,上梁不正下梁歪全家颜面无存

匹夫来搞笑
2026-08-21 01:15:55
深圳多小区纷纷禁止封阳台,业主:被停水停电、锁房产证了!

深圳多小区纷纷禁止封阳台,业主:被停水停电、锁房产证了!

深圳买房计划
2026-08-20 23:09:04
53岁海蒂·克拉姆清晨仅裹丝巾喝鸡汤,老公还在睡

53岁海蒂·克拉姆清晨仅裹丝巾喝鸡汤,老公还在睡

时光慢旅人
2026-08-21 01:55:34
哈登3年9700万续约!总薪资达5.11亿美元 成詹杜库之后历史第四人

哈登3年9700万续约!总薪资达5.11亿美元 成詹杜库之后历史第四人

惊奇侃球
2026-08-21 01:26:10
硅谷CEO: Grok Bot诞生,震撼程度堪比Claude Code时刻!

硅谷CEO: Grok Bot诞生,震撼程度堪比Claude Code时刻!

新智元
2026-08-20 12:52:37
李彦宏的危机:很多人已经很久没打开过百度了!

李彦宏的危机:很多人已经很久没打开过百度了!

新浪财经
2026-08-20 14:05:31
华盛顿号航母抵达中东,美媒曝光:美军悄悄建立霍尔木兹通航秘密航道!特朗普要求所有盟友孤立伊朗,伊方释放“由守转攻”信号

华盛顿号航母抵达中东,美媒曝光:美军悄悄建立霍尔木兹通航秘密航道!特朗普要求所有盟友孤立伊朗,伊方释放“由守转攻”信号

每日经济新闻
2026-08-21 00:57:07
记者:若德罗赞愿接受底薪合同,掘金乐意签下

记者:若德罗赞愿接受底薪合同,掘金乐意签下

懂球帝
2026-08-21 08:10:06
韩国伦理片《伴侣》:温柔人妻的无声喘息,成年人的爱早已静音

韩国伦理片《伴侣》:温柔人妻的无声喘息,成年人的爱早已静音

可乐谈情感
2026-08-21 00:06:08
穆里尼奥整活了!丹麦马蒂奇、20岁葡超MVP,皇马这次可是认真的

穆里尼奥整活了!丹麦马蒂奇、20岁葡超MVP,皇马这次可是认真的

穆里尼奥主义者
2026-08-20 23:02:55
8月20日,7架图-95凌晨集体升空,俄罗斯报复速度比预期更快

8月20日,7架图-95凌晨集体升空,俄罗斯报复速度比预期更快

青青衫书生
2026-08-20 15:35:13
2026-08-21 08:28:49
将门创投 incentive-icons
将门创投
加速及投资技术驱动型初创企业
2477文章数 596关注度
往期回顾 全部

科技要闻

快手Q2研发狂烧45亿:如何面对双面夹击

头条要闻

很多人用过他的表情包 千万粉丝博主宣布退网一段时间

头条要闻

很多人用过他的表情包 千万粉丝博主宣布退网一段时间

体育要闻

46岁小罗抵达意大利 将为拉文纳征战意丙

娱乐要闻

任重晒全家福官宣二胎喜讯

财经要闻

许家印被判处无期 恒大集团被罚88.2亿

汽车要闻

比总部还大?比亚迪藏在上海虹桥的巨无霸闪充站!

态度原创

艺术
房产
旅游
亲子
军事航空

艺术要闻

中国最强“造假大师”张大千:靠假画骗翻半个画坛,专家看完直接认输

房产要闻

265亿资产甩出!三亚老牌地产巨头,正在集体退场!

旅游要闻

【烟火人间】胡同与海子

亲子要闻

教育不应是一场急于求成的竞速赛,而应是一场静待花开的成长之旅

军事要闻

知情人士称美国“林肯”号航母开始返航

无障碍浏览 进入关怀版