文档章节

从最近的比赛学习CTR/CVR

o
 osc_f85py9gf
发布于 2019/05/14 10:40
字数 1256
阅读 4
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

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的数据集,比较适合学习,讲解地非常详细。

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
Nutch学习笔记4-Nutch 1.7 的 索引篇 ElasticSearch

上一篇讲解了爬取和分析的流程,很重要的收获就是: 解析过程中,会根据页面的ContentType获得一系列的注册解析器, 依次调用每个解析器,当其中一个解析成功后就返回,否则继续执行下一个解...

强子哥哥
2014/06/26
712
0
Steam Installer for Wheezy

Linux游戏最近因为Valve旗下Steam平台的支持而获得快速增长。最初Steam只承诺支持最流行的桌面发行版Ubuntu,但最近它已向其它流行发行版开放了大门。但如果你使用的是不那么流行的发行版呢?...

匿名
2013/03/06
877
0
高仿腾讯爱看

高仿腾讯爱看App中用户体验,包括App启动动画,和阅读列表交互效果。在阅读列表视图中,点击展开列表行(UITableViewCell),该列表行成为新视图展示更多内容。还可以收缩列表行返回之前阅读...

匿名
2013/05/21
1.4K
0
数据库结构比较工具--dbcompare

数据库结构比较工具,目前支持mysql,oracle,sql server. 概述: 在设计开发过程中经常会出现开发库与测试库不一致,测试库与生产库不一致,每次手工比对是个辛苦的活。 以前用java写过一个数...

dbcompare
2013/06/25
5.8K
0
TBB学习:并行循环

http://www.cppprog.com/2009/0325/92.html

Waiting4you
2009/05/12
674
0

没有更多内容

加载失败,请刷新页面

加载更多

数据库—从注入到提权的全家桶套餐

这是 酒仙桥六号部队 的第 55 篇文章。 全文共计5397个字,预计阅读时长17分钟。 前言 偶然看到了最新的数据库流行度排名,发现在前5名的关系型数据库中,日常渗透测试见到最多的便是MySQL,...

一名白帽的成长史
前天
0
0
Linux安装 jdk tomcat mysql

安装 jdk # 华为云镜像jdk下载:https://repo.huaweicloud.com/java/jdk/# 1. 上传jdk解压至 /usr/local# 2. vim /etc/profile export JAVA_HOME=/usr/local/jdk export PATH=......

codeccb
3分钟前
0
0
「MoreThanJava」Day 5:面向对象进阶-继承详解

「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」。 当然 不论新老朋友...

我没有三颗心脏
前天
0
0
了解 JS 压缩图片,这一篇就够了

△ 是新朋友吗?记得先点web前端学习圈关注我哦~ 前言 公司的移动端业务需要在用户上传图片是由前端压缩图片大小,再上传到服务器,这样可以减少移动端上行流量,减少用户上传等待时长,优化...

web前端学习圈
今天
0
0
int32的最大值是多少? - What is the maximum value for an int32?

问题: I can never remember the number. 我永远记不住这个数字。 I need a memory rule. 我需要一个记忆规则。 解决方案: 参考一: https://stackoom.com/question/Obf/int-的最大值是多少...

javail
6分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部