写点什么

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

评论

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

漫格拼车系统:一站式同城拼车平台解决方案

微擎应用市场

读书助手微信小程序:高效识字记词的阅读好帮手

微擎应用市场

Dify平台是否提供webhook或事件驱动的集成选项?

伊克罗德信息科技

开放原子大会上最意外的一幕:TDengine 被点名两次!

TDengine

tdengine 时序数据库 开放原子基金会

讲一个世界听得懂的故事:构建全球品牌出海叙事的框架与方法

Wolink

出海 品牌营销 海外营销推广 品牌出海 品牌推广

Dify 预建集成指南:无缝连接 MaaS、API 与 MCP 平台

伊克罗德信息科技

越客证书查询系统:高度自定义的全场景证书管理解决方案

微擎应用市场

漫格同城信息程序:一站式打造本地微信同城分类信息平台

微擎应用市场

从中国品牌到全球品牌:SHEIN品牌出海全路径深度复盘

Wolink

企业出海 跨境电商 出海 出海服务商 品牌出海

在企业级 Java 中应用领域驱动设计:一种行为驱动方法

码界行者

DDD BDD

系统性能提升 3 倍,存储成本降 80%:金恒科技用时序数据库 TDengine 加速钢铁智造

TDengine

【征文计划】视觉AI赋能零售:Rokid Glasses智能购物清单系统的架构设计与实现

穿过生命散发芬芳

Rokid

小程序如何一键生成鸿蒙APP?FinClip助力企业快速布局Harmony OS生态

FinClip

OceanBase 年度发布会 Hands-on AI Workshop 回顾

老纪的技术唠嗑局

rag

DongSQL数据库内核V1.1.0介绍

京东零售技术

一句话生成视频!腾讯元宝上新“文生视频”能力

科技大数据

泡泡玛特成功在于设计?投资教父卫哲说:这是一场“产品高效创新”的胜利

赛博威科技

人工智能 产品设计 产品创新

中国电信SD-WAN如何申请

宽炜网络

电信sd-wan

从“性价比”到“心价比”:品牌出海如何重塑价值主张

Wolink

跨境电商 海外社媒营销 海外营销推广 品牌出海 海外红人营销

1688评论接口实战:B端视角下的竞品(供应商)数据拆解指南

Noah

朝阳永续基于阿里云 Milvus 构建金融智能投研产品“AI 小二”

阿里云大数据AI技术

人工智能 阿里云 Milvus 向量数据库

小度科技CEO李莹WISE2025演讲:智能硬件迈向"主动思考"伙伴时代

科技大数据

企业如何选择低代码开发平台:费用明细与选购建议

红迅AI低代码老陈

低代码 低代码开发 低代码选择 红迅低代码

新签约 | 从数小时到实时:海康智联用时序数据库 TDengine 加速智慧交通决策

TDengine

tdengine 时序数据库

智能光伏时代:"四可"技术如何提升电站综合价值

西格电力

分布式光伏并网 光伏四可装置 分布式光伏发电 分布式光伏产品

CVE-2025-59287(RCE 漏洞)将 WSUS 变为攻击载体:使用 ADAudit Plus 追踪可疑进程行为

运维有小邓

AD域 AD域审计

低代码开发平台选型与成本分析:企业选型必读指南

红迅AI低代码老陈

低代码开发 AI低代码平台 红迅低代码 低代码选型

Playwright MCP项目实战:基于提示的浏览器测试与代码生成

测试人

人工智能 软件测试

保姆级教程:3分钟带你轻松搭建N8N自动化平台!(内附视频)

王磊

大屏数据源连不上、理不清?JNPF 四大数据库适配,测试连接一步到位!

引迈信息

告别“数据孤岛”,基金公司如何构建秒级响应的统一分析底座?

镜舟科技

金融科技 OLAP StarRocks 湖仓 向量化引擎

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