一、给出CTR背景知识
1、在online advertising领域,其收费方式有以下几种:
CTR即click through rate,其计算公式如下:
通过预测每只广告的CTR,我们可以评估向用户推荐那些“广告”最赚钱,在实际场景中,对“广告的评估”不仅仅会使用CTR,可能会结合多个指标综合考虑,比如:可能会用CTR * price来评估广告的推荐 会赚多少钱。这是因为,有些广告,click一次可能只有10 ¥,而一些广告一次click可能就达到1000¥,因此,在实际中,选取那些广告放到推荐位置,除CTR以外,还会考虑其他因素。
二、CTR常用model 即评估方式
在CTR预估中,SVM一般不会被使用,常使用的model按frequency可以排列如下:LR(可解释度高),Tree-base(GBDT, random forest),DNN。其中,LR一般用作基准model来使用,当其他model出现问题时,我们会首选LR 进行运作。
此外,在选择model时,我们也可以将LR作为base model,根据它的表现(overfitting or underfitting),来判定我们应该选用什么样的model。
CTR prediction常用评估方式为:AUC曲线。
在CTR预估中,由于data中两种label{click=1,click=0}的数据量极不平衡,因此,可采用下采样的方式 重新组建train data。在下采样中,我们可以将click=1的保留率设置的高一点,click=0的保留率设置的第一点。
在CTR预估中,数据量是很庞大的,如果直接用pandas载入data,内存可能会爆掉(这是因为Pandas会对导入的数据结构做优化,如果导入200M数据 可能需要 上G内存)。因此,我们可以用"Liblinear"来载入数据(这是工业界的做法),Liblinear会将数据载为“sparse data(libsvm format)”。
Liblinear 和 xgboost 均只是 libsvm。
最后,还给出了两种方法“FM 和 FFM”,类似于矩阵分解,解决CTR数据稀疏问题。
三、CTR中一些类型特征的预处理方法
1、用户id 特征处理方法:
我们可以根据data的其他feature,对用户id进行“聚类”,然后对聚类后的class进行one hot encoding,从而得到一个新的特征。
2、时间特征 的 处理方法:
可以将时间特征 进行离散化处理。
3、对于类别型 feature 的处理方式
对于类别型feature,可以统计一下各个类别出现的frequency,对于低频的类别:
1)我们可以将其单独拎出来,看是否可以直接用于prediction;
2)或者,我们可以将那些低频类别,作为一个类别看待,然后,与其他类别一起进行one hot encoding;
4、组合特征 会带来的问题:
1)可能导致数据量过大,内存爆掉;
2)组合特征中的0值过多,1太少,有效sample太少,导致model不准;
一般在实际中,2个feature组合数据量已经很大,3个feature 及以上 组合 一般不用。
四、CTR案例 display advertising challenge 优胜者的解题思路(该案例 在kaggle已经找不到了)
链接:https://github.com/owenzhang/kaggle-avazu
五、老师的CTR案例 display advertising challenge的code
链接:https://github.com/wbqjyjy/ML-/tree/master/kaggle%E5%AE%9E%E6%88%98%E6%A1%88%E4%BE%8B/avazu-CTR-Prediction-LR
五、可以用于练手的“大众点评”数据
链接: https://pan.baidu.com/s/1qYRM2cs 密码: twa7
参考format:Kaggle滑水 - CTR预估(GBDT-LR)