10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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:006725

评论

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

Package Builder for Mac:Mac 软件打包的得力助手

晨光熹微

Screen Wonders for Mac:点亮 Mac 桌面的奇幻之光

晨光熹微

ToothFairy for Mac:轻松管理蓝牙设备

晨光熹微

人工智能在音频、视觉、多模态领域的应用

测试人

精彩抢先看 | 博睿数据将受邀出席GOPS全球运维大会2025北京站!

博睿数据

CST的热仿真THs稳态求解器--针式散热片

思茂信息

cst CST软件 CST Studio Suite

BricsCAD 23 for Mac(CAD建模软件)v23.2.07中/英文永久激活版

Rose

Boom 3D for Mac:重塑你的听觉盛宴

晨光熹微

Boom 3D Boom 3D for Mac Boom 3D激活版

HarmonyOS NEXT应用开发-Notification Kit(用户通知服务)通知类型、级别与渠道

李洋-蛟龙腾飞

钉钉携手鸿蒙扫一扫,打造高效办公新体验

HarmonyOS SDK

harmoyos

KOL技术圈 | 下一代智能可观测平台长什么样?来看Bonree ONE的极致演绎!

博睿数据

【重磅】JimuReport 积木报表 v2.0 版本发布,免费可视化报表

JEECG低代码

数据可视化 报表 积木报表 报表工具 积木BI

选择GPU云服务器供应商的注意事项

Ogcloud

gpu 云服务商 GPU云服务器 GPU云服务器供应商

企业带宽租赁的优势与应用场景有哪些?

Ogcloud

带宽租用 带宽租赁 大带宽 机房大带宽 大带宽租用

从OCR到Document Parsing,AI时代的非结构化数据处理发生了什么改变?

合合技术团队

人工智能 算法 #大数据

专业的科学和工程分析软件 WaveMetrics Igor Pro 9 Mac

Rose

QT软件外包开发中的测试

北京木奇移动技术有限公司

软件外包公司 QT开发公司 QT软件开发

智慧党建系统(源码+文档+讲解+演示)

深圳亥时科技

OmniReader Pro for Mac:重塑你的阅读体验

晨光熹微

【堡垒机小知识】堡垒机可以做到应用透明吗?

行云管家

堡垒机 IT运维 应用透明

KubeCon 抢鲜 | Kmesh与你共创高性能流量治理更优方案

华为云原生团队

云计算 容器 云原生

为什么有的企业上了ERP还要上MES?

积木链小链

数字化转型 ERP 智能制造 mes

云智慧再次入选2024亚太区ITSM软件市场TOP10

云智慧AIOps社区

ITSM ITSM软件 工单系统

Go 切片拷贝性能揭示:大切片总体拷贝时间更长,但单元素成本更低

异常君

Go 性能 内存 优化 切片

当AI遇上供应链 第七在线助力精准决策

第七在线

告别数据库瓶颈!用这个技巧让你的程序跑得飞快!

左诗右码

一文让你简单了解国密堡垒机定义以及作用

行云管家

堡垒机 国密算法 国密堡垒机 信创国密

AI技术在图书馆业务中的应用

北京木奇移动技术有限公司

软件外包公司 AI技术应用 图书馆信息化

从CPU冒烟到丝滑体验:算法SRE性能优化实战全揭秘|得物技术

得物技术

cpu

QT软件外包项目的验收

北京木奇移动技术有限公司

软件外包公司 QT开发公司 QT外包公司

装备制造MES系统解决方案:破解生产痛点,驱动智能制造升级

万界星空科技

制造业 mes 装备修理行业 装备制造 装备mes

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