从最近的比赛学习CTR/CVR

https://zhuanlan.zhihu.com/p/35046241html

从最近的比赛学习CTR/CVR

最近在玩kaggle的talking data的比赛,适逢IJCAI2018的比赛也是CTR问题,故将最近学习的东西整理下分享,欢迎你们拍砖。python

CTR预估就是这样的任务:给定用户或某惟一标识,给定一个商品(Product),给定了必定的环境,来看用户会不会买这个商品,买商品的几率有多高;或者说给用户推荐一个电影,用户会不会看这个电影,看的几率有多高。形式化的表示就是建模P(click|content)给定上下文,建模点击/购买/下载/使用的几率。git

CTR是不少电商,社交,信息流涉及到盈利的很是关键的技术,各家都很是重视,CTR微小的提高,带来的就是可观的盈利。github

CTR问题为何是一个值得拿出来研究的问题,是由于问题的特殊性。算法

 

  • 存在高维度的稀疏特征

好比从用户的维度看,大的电商其用户有上亿,商品种类也繁多,这样简单的独热编码就带来了上亿维的特征ide

 

  • 不少离散性质的特征

好比其行为发生时间,行为发生的渠道/页面位置等学习

通常来说,对于CTR问题解决方向有两个,一是经过精巧的特征工程结合简单的模型(LR),这须要很是之高的专家知识和特征工程能力。二是弱化特征工程,经过模型的复杂性来自动发现建模,比较有表明的是Facebook的GBDT+LR,FM,FFM,DNN等方法。深度学习风潮兴起以后,不少基于NN的方法,如谷歌的deep and wide, Deep FM, FNN等方法也取得了不错的效果。优化

参考 ,wzhe06同窗搜集的论文列表编码

除了很是厉害的特征工程助你取胜以外,下面有一些经典的论文和方法讲解。固然这只是通常套路,针对具体的数据须要你有本身的理解,活用方法和创新才能立于不败之地。spa

0.FM/FFM

FM和FFM是台大的童鞋们在Netflix的比赛中把名声打响,后来在CTR中一直有不错的效果,FM和FFM的设计,隐含了不少矩阵分解,以及深度学习中embedding的思想,能够说这种压缩降维表示的思想在高维稀疏数据中都有不错的效果,这篇博客对其原理有讲解。不过我在实践中发现,libffm对于talking data这种数据量巨大,极不平衡的状况下无法收敛,具体的缘由还在排查。

1.FTRL 

Ad Click Prediction a View from the Trenches

这篇论文是很是经典的FTRL方法,在taiking data的kernel上有Giba大佬的分享 giba-darragh-ftrl-rerevisited
FTRL还解决了在线学习的问题,在线学习是算法实用化很是关键的一点。中文博客在这里有对原理的讲解, 感兴趣的同窗能够看一看。

2. Practical Lessons from Predicting Clicks on Ads at Facebook

这篇文章也很是有名,是把GBDT的叶子结点送给LR,经过模型自动发现学习组合特征。在业界和竞赛上都有不错的效果,中文博客以下三篇对这个讲解不错,Xgboost使用简单的

new_feature= xgb.predict(d_test, *pred_leaf*=True)

就能够拿到GBDT的叶子结点特征,很是方便

3.一些NN方法

NN的方法直觉思路是,经过embedding获得向量空间的表示,而后拿到表示后经过NN模型复杂的非线性完成分类。

在talking data一开始的时候,我在kernel写了个NN一把梭的baseline,后来有几个大佬在这上面作了一些优化,看起来比较简单。

下面是一些比较经典的论文,这些论文不少在去年的腾讯计算广告计算大赛中第一名都有所使用,而且取得了单模型就能排到第三的很好的成绩,因此深度学习不容小觑。

youtebe使用DNN作推荐

Deep & wide

 

下面是一些过往比赛的整理:

kaggle:outbrain click prediction

kaggle:Display Advertising Challenge

kaggle Click-ThroughRate Prediction

腾讯社交广告大赛

天池优惠券使用预测

这里有一个完整的CTR的解决方法,,kaggle的数据集,比较适合学习,讲解地很是详细。

相关文章
相关标签/搜索