DeepCTR:易用可扩展的深度学习点击率预测算法包
创始人
2024-01-29 18:11:41
0

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

DeepCTR的设计主要是面向那些对深度学习以及CTR预测算法感兴趣的同学,使他们可以利用这个包:

  1. 从一个统一视角来看待各个模型
  2. 快速地进行简单的对比实验
  3. 利用已有的组件快速构建新的模型

统一视角

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

快速实验

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

import pandas as pd
from sklearn.metrics import log_loss, roc_auc_score
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder, MinMaxScalerfrom deepctr.models import DeepFM
from deepctr.feature_column import SparseFeat, DenseFeat, get_feature_namesif __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 featuresfor 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 namefixlen_feature_columns = [SparseFeat(feat, vocabulary_size=data[feat].nunique(),embedding_dim=4 )for i,feat in enumerate(sparse_features)] + [DenseFeat(feat, 1,)for feat in dense_features]dnn_feature_columns = fixlen_feature_columnslinear_feature_columns = fixlen_feature_columnsfeature_names = get_feature_names(linear_feature_columns + dnn_feature_columns)# 3.generate input data for modeltrain, test = train_test_split(data, test_size=0.2, random_state=2018)train_model_input = {name:train[name] for name in feature_names}test_model_input = {name:test[name] for name in feature_names}# 4.Define Model,train,predict and evaluatemodel = DeepFM(linear_feature_columns, dnn_feature_columns, task='binary')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层需要的shape
deep_input = Flatten()(fm_input)#将输入拼接成Deep网络需要的shape
fm_out = FM()(fm_input)#调用FM组件
deep_out = DNN(dnn_hidden_units, dnn_activation, l2_reg_dnn, dnn_dropout,dnn_use_bn, seed)(deep_input)#调用Deep网络组件
deep_logit = Dense(1, use_bias=False, activation=None)(deep_out)

如何使用呢!?

首先可以通过一下命令进行安装~

pip install deepctr[cpu]#CPU版本
pip install deepctr[gpu]#GPU版本

 DeepCTR:易用可扩展的深度学习点击率预测算法包 - 知乎

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...