CTR预估系列:DeepCTR 一个基于深度学习的CTR模型包
在计算广告和推荐系统中,CTR预估一直是一个核心问题。无论在工业界还是学术界都是一个热点研究问题,近年来也有若干相关的算法竞赛。本文介绍一个基于深度学习的CTR模型包DeepCTR,具有简洁易用、模块化和可扩展的优点。(本文作者:沈伟臣)
CTR预估简介
CTR预估是计算广告中最核心的算法之一,那么CTR预估是指什么呢?简单来说,CTR预估是对每次广告的点击情况做出预测,预测用户是点击还是不点击。
在计算广告和推荐系统中,CTR预估一直是一个核心问题。无论在工业界还是学术界都是一个热点研究问题,近年来也有若干相关的算法竞赛。
DeepCTR简介
人们通过构造有效的组合特征和使用复杂的模型来学习数据中的模式来提升效果。基于因子分解机的方法,可以通过向量内积的形式学习特征的交互,并且泛化到那些没有出现过的组合上。
随着深度神经网络在若干领域的巨大发展,近年来研究者也提出了若干基于深度学习的分解模型来同时学习低阶和高阶的特征交互,如:
FNN,PNN,Wide&Deep,DeepFM,NFM,AFN,DIN等。
对于刚接触这方面的同学来说,可能对这些方法的细节还不太了解,虽然网上有很多介绍,但是代码却没有统一的形式,且使用起来不是很方便,从头开始实现成本又比较高。那么这里介绍一个基于深度学习的CTR模型包DeepCTR,无论是使用还是学习都很方便。
DeepCTR是一个简洁易用、模块化和可扩展的基于深度学习的CTR模型包。除了近年来主流模型外,还包括许多可用于轻松构建您自己的自定义模型的核心组件层。
您可以像使用其他Keras模型一样简单的通过model.fit()和model.predict()使用这些复杂模型。
图:支持文档
安装与使用
安装
pip install deepctr
使用例子:
下面用一个简单的例子告诉大家,如何快速的应用一个基于深度学习的CTR模型。
The Criteo Display Ads dataset 是kaggle上的一个CTR预估竞赛数据集。里面包含13个数值特征I1-I13和26个类别特征C1-C26。
# 先导入相应的python包,记得先安装以下tensorflow(1.4.0到1.6.0都可以)
import pandas as pd
from sklearn.preprocessing import LabelEncoder, MinMaxScaler
from deepctr.models import DeepFM
# 使用pandas 读取上面介绍的数据,并进行简单的缺失值填充
data = pd.read_csv('./criteo_sample.txt')
# 上面的数据在:https://github.com/shenweichen/DeepCTR/blob/master/demo/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']
#这里我们需要对特征进行一些预处理,对于类别特征,我们使用LabelEncoder重新编码(或者哈希编码),对于数值特征使用MinMaxScaler压缩到0~1之间。
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])# 这里是比较关键的一步,因为我们需要对类别特征进行Embedding,所以需要告诉模型每一个特征组有多少个embbedding向量,我们通过pandas的nunique()方法统计。
sparse_feature_dict = {feat: data[feat].nunique() for feat in sparse_features}
dense_feature_list = dense_features
#最后,我们按照上一步生成的特征字典拼接训练数据
model_input = [data[feat].values for feat in sparse_feature_dict] + [data[feat].values for feat in dense_feature_list]
# 一切就绪,使用DeepFM进行训练!
model = DeepFM({"sparse": sparse_feature_dict, "dense": dense_feature_list}, final_activation='sigmoid')
model.compile("adam", "binary_crossentropy",metrics=['binary_crossentropy'], )
history = model.fit(model_input, data[target].values, batch_size=256, epochs=10, verbose=2, validation_split=0.2, )
print("train done")
总结
DeepCTR是一个简洁易用、模块化和可扩展的基于深度学习的CTR模型包。本文对
DeepCTR进行简单介绍,并举例说明,同时提供DeepCTR的代码、文档资源。
资源下载
文档主页:
https://deepctr-doc.readthedocs.io/en/latest/index.html
代码主页:
https://github.com/shenweichen/DeepCTR
本文作者:沈伟臣,浙江大学计算机硕士,wcshen1994@163.com
github主页:https://github.com/shenweichen
请关注和分享↓↓↓
机器学习初学者
QQ群:654173748
往期精彩回顾
机器学习简易入门-附推荐学习资料
机器学习初学者公众号下载资源汇总(一)
黄海广博士的github镜像下载(机器学习及深度学习资源)
吴恩达老师的机器学习和深度学习课程笔记打印版
机器学习小抄-(像背托福单词一样理解机器学习)
首发:深度学习入门宝典-《python深度学习》原文代码中文注释版及电子书
科研工作者的神器-zotero论文管理工具
机器学习的数学基础
机器学习必备宝典-《统计学习方法》的python代码实现、电子书及课件
CTR预估系列:DeepCTR 一个基于深度学习的CTR模型包相关推荐
- 【原创】推荐广告入门:DeepCTR-Torch,基于深度学习的CTR预测算法库
在计算广告和推荐系统中,CTR预估一直是一个核心问题.无论在工业界还是学术界都是一个热点研究问题,近年来也有若干相关的算法竞赛陆续举办.本文介绍一个使用PyTorch编写的深度学习的点击率预测算法库D ...
- DeepCTR-Torch,基于深度学习的CTR预测算法库
点击率预估问题 点击率预估问题通常形式化描述为给定用户,物料,上下文的情况下,计算用户点击物料的概率即:pCTR = p(click=1|user,item,context). 简单来说,在广告业务中 ...
- 我用 tensorflow 实现的“一个神经聊天模型”:一个基于深度学习的聊天机器人
我用 tensorflow 实现的"一个神经聊天模型":一个基于深度学习的聊天机器人 个工作尝试重现这个论文的结果A Neural Conversational Model(aka ...
- opencv交通标志识别_教你从零开始做一个基于深度学习的交通标志识别系统
教你从零开始做一个基于深度学习的交通标志识别系统 基于Yolo v3的交通标志识别系统及源码 自动驾驶之--交通标志识别 在本文章你可以学习到如何训练自己采集的数据集,生成模型,并用yolo v3算法 ...
- DeepEye:一个基于深度学习的程序化交易识别与分类方法
DeepEye:一个基于深度学习的程序化交易识别与分类方法 徐广斌,张伟 上海证券交易所资本市场研究所,上海 200120 上海证券交易所产品创新中心,上海 200120 摘要:基于沪市A股交 ...
- 基于深度学习的图像识别模型研究综述
基于深度学习的图像识别模型研究综述 摘要:深度学习是机器学习研究中的一个新的领域,其目的在于训练计算机完成自主学习.判断.决策等人类行为并建立.模拟人脑进行分析学习的神经网络,它模仿人类大脑的机制来解 ...
- OCR技术系列之四】基于深度学习的文字识别(3755个汉字)(转)
上一篇提到文字数据集的合成,现在我们手头上已经得到了3755个汉字(一级字库)的印刷体图像数据集,我们可以利用它们进行接下来的3755个汉字的识别系统的搭建.用深度学习做文字识别,用的网络当然是CNN ...
- 【OCR技术系列之四】基于深度学习的文字识别(3755个汉字)
上一篇提到文字数据集的合成,现在我们手头上已经得到了3755个汉字(一级字库)的印刷体图像数据集,我们可以利用它们进行接下来的3755个汉字的识别系统的搭建.用深度学习做文字识别,用的网络当然是CNN ...
- 基于深度学习的图像识别模型发展
一.简介 AlexNet:(2012)主要贡献扩展 LeNet 的深度,并应用一些 ReLU.Dropout 等技巧.AlexNet 有 5 个卷积层和 3 个最大池化层,它可分为上下两个完全相同的分 ...
最新文章
- 基于弹性束图匹配的人脸识别
- Spring精华问答 | 如何集成Spring Boot?
- easyexcel 工具类_问了个在阿里的同学,他们常用的15款开发者工具!
- 服务器运行程序 网络错误怎么办,网站出现:ldquo;/rdquo;应用程序中的服务器错误。该如何解决?_已解决 - 阿里巴巴生意经...
- [转载红鱼儿]kbmmw 开发点滴:kbmMW在事务中批量执行SQL
- IntelliJ IDEA for CleanCode
- el-option传两个值_如意芳霏三对CP三种甜,傅容与徐晋夫唱妇随,甜蜜值爆棚
- 考研数二高数基础笔记
- uni app 自定义基座 真机调试 ios设备
- win7计算机的ip地址设置,如何将win7ip地址设置成自动获取
- Emscripten 单词_学会词根词缀,开启高效、快速地记忆英语单词模式
- android 静态蓝牙地址吗,用于BLE广告的Android 5静态蓝牙MAC地址 | 所有编程讨论 | zhouni.net...
- 魔兽私服Trinitycore架构设计分析之一
- 统计词频并输出高频词汇
- 攻防世界_mobil_app1
- 禁止APP录屏和截屏
- 国内常用的三种防火墙你接触过哪些?
- 《Microduino实战》——1.6 总结
- 手把手解决“npm、node不是内部或外部命令,也不是可运行的程序或批处理文件”
- Prometheus和它的xdm
热门文章
- spark源码编译记录
- 列表(list)之一定义 添加 删除 排序 反转 索引等其他操作
- C++中的虚函数(virtual function)
- 泛海精灵 Beta计划 (草案)
- Windows Azure 解决方案系列: 能源监测减少支出,通过托管平台拓展业务
- 存储过程,触发器,事务和锁
- webpack打包后引用cdn的js_呕心沥血编写的webpack多入口零基础配置 【建议收藏】...
- JavaScript(四)——面向对象编程、BOM、DOM、表单验证、jQuery
- ArcGIS Desktop 10.5 安装教程(win10环境下)
- PriorityQueue和queue的区别