写点什么

DeepCTR:易用可扩展的深度学习点击率预测算法库

  • 2019-05-08
  • 本文字数:2124 字

    阅读完需:约 7 分钟

DeepCTR:易用可扩展的深度学习点击率预测算法库

这个项目主要是对目前的一些基于深度学习的点击率预测算法进行了实现,如 PNN , WDL , DeepFM , MLR , DeepCross , AFM , NFM , DIN , DIEN , xDeepFM , NFFM , AutoInt 等,并且对外提供了一致的调用接口。关于每种算法的介绍这里就不细说了,大家可以看论文,看知乎,看博客,讲的都很清楚。


这里简单从整体上介绍一下 DeepCTR 这个库。首先这个不是一个框架,它不具有学术创新意义,目前也没有解决什么复杂的工程问题。它面向的对象是那些对深度学习以及 CTR 预测算法感兴趣的同学,可以利用这个库:


  1. 从一个统一视角来看待各个模型

  2. 快速地进行简单的对比实验

  3. 利用已有的组件快速构建新的模型

统一视角

DeepCTR 通过对现有的基于深度学习的点击率预测模型的结构进行抽象总结,在设计过程中采用模块化的思路,各个模块自身具有高复用性,各个模块之间互相独立。基于深度学习的点击率预测模型按模型内部组件的功能可以划分成以下 4 个模块:输入模块,嵌入模块,特征提取模块,预测输出模块。


快速实验


Criteo 数据集预览


下面是一个简单的用 DeepFM 模型在 criteo 数据集上训练的的例子。


import pandas as pdfrom sklearn.preprocessing import LabelEncoder, MinMaxScalerfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import log_loss, roc_auc_scorefrom deepctr.models import DeepFMfrom deepctr.utils import SingleFeatif __name__ == "__main__":
data = pd.read_csv('./criteo_sample.txt')
sparse_features = ['C' + str(i) for i in range(1, 27)] dense_features = ['I'+str(i) for i in range(1, 14)]
data[sparse_features] = data[sparse_features].fillna('-1', ) data[dense_features] = data[dense_features].fillna(0,) target = ['label'] # 1.Label Encoding for sparse features,and do simple Transformation for dense features for feat in sparse_features: lbe = LabelEncoder() data[feat] = lbe.fit_transform(data[feat]) mms = MinMaxScaler(feature_range=(0, 1)) data[dense_features] = mms.fit_transform(data[dense_features]) # 2.count #unique features for each sparse field,and record dense feature field name sparse_feature_list = [SingleFeat(feat, data[feat].nunique()) for feat in sparse_features] dense_feature_list = [SingleFeat(feat, 0) for feat in dense_features] # 3.generate input data for model train, test = train_test_split(data, test_size=0.2) train_model_input = [train[feat.name].values for feat in sparse_feature_list] + \ [train[feat.name].values for feat in dense_feature_list] test_model_input = [test[feat.name].values for feat in sparse_feature_list] + \ [test[feat.name].values for feat in dense_feature_list] # 4.Define Model,train,predict and evaluate model = DeepFM({"sparse": sparse_feature_list, "dense": dense_feature_list}, final_activation='sigmoid') model.compile("adam", "binary_crossentropy", metrics=['binary_crossentropy'], ) history = model.fit(train_model_input, train[target].values, batch_size=256, epochs=10, verbose=2, validation_split=0.2, ) pred_ans = model.predict(test_model_input, batch_size=256)
print("test LogLoss", round(log_loss(test[target].values, pred_ans), 4)) print("test AUC", round(roc_auc_score(test[target].values, pred_ans), 4)))
复制代码

快速构建新模型

所有的模型都是严格按照 4 个模块进行搭建的,输入和嵌入以及输出基本都是公用的,每个模型的差异之处主要在特征提取部分。


下面是 DeepFM 模型的特征提取核心代码,大家也可以利用这些已有的组件去构建自己想要的模型。


fm_input = Concatenate(axis=1)(embed_list)#将输入拼接成FM层需要的shapedeep_input = Flatten()(fm_input)#将输入拼接成Deep网络需要的shapefm_out = FM()(fm_input)#调用FM组件deep_out = MLP(hidden_size, activation, l2_reg_deep, keep_prob,use_bn, seed)(deep_input)#调用Deep网络组件deep_logit = Dense(1, use_bias=False, activation=None)(deep_out)
复制代码

如何使用呢!?

首先确保你的 python 版本 >=3.4 然后:


pip install deepctr
复制代码


就可以安装成功啦!剩下的我建议你先来项目仓库点个赞,然后再去看说明文档!


DeepCTR 项目地址:


https://github.com/shenweichen/DeepCTR


Welcome to DeepCTR’s documentation!


地址:


https://deepctr-doc.readthedocs.io/en/latest/


最后就是欢迎感兴趣的同学一起来维护建设和交流,无论是文档,还是开发,还是测试,都欢迎~

作者介绍:

沈伟臣,阿里巴巴算法工程师,硕士毕业于浙江大学计算机学院。对机器学习,强化学习技术及其在推荐系统领域内的应用具有浓厚兴趣。


本文来自 沈伟臣 在 DataFun 社区的演讲,由 DataFun 编辑整理。


2019-05-08 08:006436

评论

发布
暂无评论
发现更多内容

Subquery? No, it's join!

Databend

九科三周年专访丨创始人万正勇:拥抱AIGC新浪潮,赋能信创产业高质量发展

九科Ninetech

PoseiSwap 更新第二期空投,持有 Zepoch 节点数量将决定空投回报

大瞿科技

代码随想录训练营 Day09 - 字符串(下)

jjn0703

从繁琐到高效,探索自动化部署的新境界

知者如C

VAP and VLAN: Enhancing Network Flexibility and Security

wallyslilly

MT7915

2023世界人工智能大会如约而至!低代码开发:点燃数智时代,让AI风口助您飞跃

不在线第一只蜗牛

人工智能 低代码 人工智能大会 行业风口

当AI侵权搅动创新之风:低代码开发平台前景岌岌可危?

快乐非自愿限量之名

人工智能 低代码 ChatGPT

3DCAT实时云渲染助力VR虚拟现实迈向成熟

3DCAT实时渲染

实时渲染

从自研走向开源的 TinyVue 组件库

OpenTiny社区

开源 前端 组件库 OpenTiny TinyVue

人脸识别技术的优缺点及其在实际应用中的影响

来自四九城儿

人脸识别技术在医疗行业的应用

来自四九城儿

Kubernetes网络模型Overlay和Underlay

虚实的星空

提升UE5写实效果的项目设置

3DCAT实时渲染

虚幻引擎5 UE5

iOS上架报错:无法添加以供审核

雪奈椰子

WIZMAP-大规模 embedding 向量的可视化交互工具

Zilliz

机器学习 深度学习 Embedding 交互式可视化工具

活动开启 | 以梦筑码 · 不负韶华 开发者故事征集令,讲出你的故事,有机会参加HDC.Together 2023

HarmonyOS开发者

HarmonyOS

拥抱抑郁,制心一处,一切美好是深度投入的产物

B Impact

在现场!2023世界人工智能大会

新云力量

人工智能 AI 人工智能大会

2023-07-06:RabbitMQ中的AMQP是什么?

福大大架构师每日一题

Rabbit 福大大架构师每日一题

PoseiSwap 更新第二期空投,持有 Zepoch 节点数量将决定空投回报

BlockChain先知

TDengine 3.0.4.0 重要特性之 Python UDF 实战分享

爱倒腾的程序员

性能认证+最佳案例,阿里云 ACK@Edge 产品技术、落地能力获信通院综合认可

阿里巴巴云原生

阿里云 容器 云原生 ACK

AI巨兽崛起!如何用低代码开发平台驭服神奇之力?

EquatorCoco

人工智能 低代码 AI大模型

为什么多数企业的数字化转型都失败了?

优秀

数字化转型 企业数字化 企业数字化 PaaS 平台

了解 Apache JMeter 的使用方法

Liam

程序员 测试 Jmeter 接口测试 测试工具

精彩回顾|【2023 ACDU 中国行·深圳站】数据库主题交流活动成功举办!

墨天轮

MySQL 数据库 oracle postgresql 腾讯云

国产化适配再进一步,融云完成欧拉、TDSQL、优炫等多方适配

融云 RongCloud

开源 运维 信创 融云 适配

研产供销数据一体化,解码汽车集团企业的数据治理之道

袋鼠云数栈

数字化转型

云计算在商业运营中的潜力

天翼云开发者社区

云计算

一次解决三大成本问题,升级后的 Zilliz Cloud 如何造福 AIGC 开发者?

Zilliz

SaaS Milvus Zilliz zillizcloud

DeepCTR:易用可扩展的深度学习点击率预测算法库_数据库_DataFunTalk_InfoQ精选文章