武汉的开发者们注意啦!AI技术战略、框架以及最佳实战尽在Azure OpenAI Day 了解详情
写点什么

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 编辑整理。


公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2019-05-08 08:006122

评论

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

提高iOS App开发效率的方法

雪奈椰子

京东JD商品详情API:实时数据获取的实现

Noah

流式湖仓增强,Hologres + Flink 构建企业级实时数仓

Apache Flink

铭文 LaunchPad 平台 Solmash 推出早鸟激励计划

长安区块链

打通商城与ERP系统,实现物料自动同步

聚道云软件连接器

案例分享

Vue.js轻量级框架:快速搭建可扩展的管理系统

互联网工科生

Vue 表单 管理系统

从工程化角度,详解鹏程·脑海大模型训练过程

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 模型训练优化

软件测试/测试开发/全日制/测试管理丨Playwright测试框架

测试人

软件测试

云服务器网站搭建全攻略:技巧与窍门

一只扑棱蛾子

云服务器

云桌面直接当电脑用?云桌面到底是何方神圣

青椒云云电脑

桌面云 云桌面 云桌面解决方案

云桌面怎么选?一篇搞懂四大关键指标!

青椒云云电脑

云桌面 云桌面厂家 云桌面方案 云桌面系统

解锁加密经济领域的新篇章:Token Explorer 助您一臂之力

Footprint Analytics

区块链 加密货币 Token 公链

RetsCloud AppLink适用的场景有哪些?

RestCloud

零代码 自动化集成 适用场景

IITO-IPQ6010 WIFI router support-What is the relationship between VAP-AP-STA?

wifi6-yiyi

iiot vap

软件测试/测试开发全日制|Pytest conftest.py配置文件如何使用?

霍格沃兹测试开发学社

软件测试/测试开发/全日制/测试管理丨Cypress测试框架

测试人

软件测试

海外云手机助力企业拓展海外市场

Ogcloud

云手机 海外云手机

云桌面如何推动建筑行业数字化转型?

青椒云云电脑

云桌面 云桌面厂家 云桌面解决方案

实录分享 | 央企大数据平台架构发展趋势与应用场景的介绍

Alluxio

人工智能 大数据 构架 Alluxio 央企

虚幻引擎nDisplay教程:如何同步nDisplay节点与Switchboard + Helix Core

龙智—DevSecOps解决方案

Jenkins入门知识:什么是Jenkins?以及它的历史与发展

龙智—DevSecOps解决方案

电商新趋势:解析养号的必要性及海外云手机运用攻略

Ogcloud

云手机 海外云手机 跨境电商云手机

PaaS服务的零代码开发平台——JNPF

这我可不懂

软件开发 低代码 JNPF

Postman POST请求教程:从入门到精通

Liam

Java 程序员 前端 后端 Postman

快速搭建前端开发平台利器

高端章鱼哥

软件开发 前端开发 前端框架

腾讯云ES RAG最佳实践:百行代码轻松实现帮助文档的智能问答

腾讯云大数据

ES

ByConity 社区回顾|ByConity 和开发者们一起展望未来,携手共进!

字节跳动开源

大数据 开源 字节跳动 社区 回顾

Mixtral 8X7B MoE模型基于PAI的微调部署实践

阿里云大数据AI技术

用C#实现简单的线性回归

EquatorCoco

Python C# 线性回归 开发语言

告别信息差!奇点云SimbaMetric打破协作壁垒,为指标管理提效

奇点云

奇点云 数据指标体系 指标工厂

2023年Gartner® DevOps平台魔力象限发布,Atlassian被评为“领导者”

龙智—DevSecOps解决方案

DevOps

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