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

深度学习炼丹劝退师
278 人赞同了该文章

从最近的比赛学习CTR/CVR

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

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

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

CTR问题为什么是一个值得拿出来研究的问题,是因为问题的特殊性。

  • 存在高维度的稀疏特征

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

  • 很多离散性质的特征

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

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

参考 https://github.com/wzhe06/Ad-papers,wzhe06同学搜集的论文列表

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

0.FM/FFM

FM和FFM是台大的童鞋们在Netflix的比赛中把名声打响,后来在CTR中一直有不错的效果,FM和FFM的设计,隐含了很多矩阵分解,以及深度学习中embedding的思想,可以说这种压缩降维表示的思想在高维稀疏数据中都有不错的效果,这篇博客对其原理有讲解。https://blog.csdn.net/mmc2015/article/details/51760681不过我在实践中发现,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的叶子结点特征,非常方便

https://breezedeus.github.io/2014/11/19/breezedeus-feature-mining-gbdt.html#fn:fbgbdt

https://blog.csdn.net/dengxing1234/article/details/73739836

https://blog.csdn.net/lilyth_lilyth/article/details/48032119

3.一些NN方法

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

在talking data一开始的时候,我在kernel写了个NN一把梭的baseline,后来有几个大佬在这上面做了一些优化,看起来比较简单。https://www.kaggle.com/baomengjiao/embedding-with-neural-network

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

youtebe使用DNN做推荐

Deep & wide

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

kaggle:outbrain click prediction
https://www.kaggle.com/c/outbrain-click-prediction/discussion
kaggle:Display Advertising Challenge
https://www.kaggle.com/c/criteo-display-ad-challenge
kaggle Click-ThroughRate Prediction
https://www.kaggle.com/c/avazu-ctr-prediction/leaderboard
腾讯社交广告大赛
http://algo.tpai.qq.com/person/mobile/?from=singlemessage&qz_gdt=cp77gwalayaicijolfwq
天池优惠券使用预测
https://tianchi.aliyun.com/competition/introduction.htm?spm=5176.100066.0.0.6f5fd780FIIzQn&raceId=231587

这里有一个完整的CTR的解决方法,http://blog.csdn.net/chengcheng1394/article/details/78940565,kaggle的数据集,比较适合学习,讲解地非常详细。

最新文章

  1. Effective C++ 之 Item 3:尽可能使用 const
  2. ETL
  3. Huxley 是一个用于Web应用 UI 测试的工具
  4. Sui 弹框固定
  5. linux之磁盘配额(quota)
  6. 在 Ubuntu 12.04 上安装 GitLab6.0
  7. C语言的本质(35)——共享库
  8. ajax相关体会
  9. [UWP小白日记-7]转换MVA学院的XML字幕为SRT (二)
  10. spring的校验框架 @Validated & BindingResult
  11. shell 命令合并文本
  12. java算法 蓝桥杯 乘法运算
  13. 【JDK1.8】JDK1.8集合源码阅读——LinkedList
  14. MySQL优化之推荐使用规范
  15. 【WC2018】即时战略
  16. nodejs,koa2常用模块
  17. “2017面向对象程序设计(Java)第就九周学习总结”存在问题的反馈
  18. POJ3268(Dijkstra_邻接矩阵)
  19. 转 在子线程中new Handler报错--Can't create handler inside thread that has not called Looper.prepare()
  20. MVC,MVP,MVVM的区别

热门文章

  1. 奥展项目笔记02--一个bat文件运行多个java jar包
  2. UML类图记忆口诀
  3. Sitecore 9 介绍
  4. Web应急:管理员账号被篡改
  5. 将本地代码提交到github上
  6. mysql 实现row_number功能
  7. 第13章 C#中的多线程
  8. 2019-09-11 redis命令【转载】
  9. Semaphore的简介及应用场景
  10. Linux操作系统安全-OpenSSL工具常用命令介绍