从最近的比赛学习CTR/CVR
https://zhuanlan.zhihu.com/p/35046241
从最近的比赛学习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的数据集,比较适合学习,讲解地非常详细。
从最近的比赛学习CTR/CVR的更多相关文章
- 我的第一个 Kaggle 比赛学习 - Titanic
背景 Titanic: Machine Learning from Disaster - Kaggle 2 年前就被推荐照着这个比赛做一下,结果我打开这个页面便蒙了,完全不知道该如何下手. 两年后,再 ...
- ACM比赛学习指导(20180223)
0.比赛介绍 (1)浙江省大学生程序设计比赛,3人一组,题目为英文 (2)ACM程序设计比赛 百度百科介绍 1.理论学习 (1)<挑战程序设计竞赛>,秋叶拓哉,巫泽俊 (2)<算法竞 ...
- multi-task learning
多任务学习, CTR, CVR 任务同时训练, 同时输出概率.
- CTR预估模型演变及学习笔记
[说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![握手][握手] [再啰嗦一下]如果你对智能推荐感兴趣,欢迎先浏览我的另一篇随笔:智能推荐算法演 ...
- 深度学习在CTR预估中的应用
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由鹅厂优文发表于云+社区专栏 一.前言 二.深度学习模型 1. Factorization-machine(FM) FM = LR+ e ...
- 推荐中的多任务学习-ESMM
本文将介绍阿里发表在 SIGIR'18 的论文ESMM<Entire Space Multi-Task Model: An Effective Approach for Estimating Po ...
- 多任务学习(MTL)在转化率预估上的应用
今天主要和大家聊聊多任务学习在转化率预估上的应用. 多任务学习(Multi-task learning,MTL)是机器学习中的一个重要领域,其目标是利用多个学习任务中所包含的有用信息来帮助每个任务学习 ...
- CTR预估经典模型总结
计算广告领域中数据特点: 1 正负样本不平衡 2 大量id类特征,高维,多领域(一个类别型特征就是一个field,比如上面的Weekday.Gender.City这是三个field),稀疏 ...
- 深入FM和FFM原理与实践
FM和FFM模型是最近几年提出的模型,凭借其在数据量比较大并且特征稀疏的情况下,仍然能够得到优秀的性能和效果的特性,屡次在各大公司举办的CTR预估比赛中获得不错的战绩.美团点评技术团队在搭建DSP的过 ...
随机推荐
- 2019-11-29-C#-性能分析-反射-VS-配置文件-VS-预编译
原文:2019-11-29-C#-性能分析-反射-VS-配置文件-VS-预编译 title author date CreateTime categories C# 性能分析 反射 VS 配置文件 V ...
- .NET获取实例化对象的部分属性名称
前言 项目中实例化的对象,对象中里面很有很多属性,有些是我们不需要的,有些是我们需要的,例如在下面的示例中:ID,CreateBy等属性在CB_Projects对象中是不需要的,在获取实例化对象属性名 ...
- SpringApplication到底run了什么(上)
在上篇文章:SpringBoot源码解析:创建SpringApplication对象实例中,我们详细描述了SpringApplication对象实例的创建过程,本篇文章继续看run方法的执行逻辑吧 p ...
- 对于js中事件冒泡的理解分析
一. 事件 事件的三个阶段:事件捕获 -> 事件目标 -> 事件冒泡 捕获阶段:先由文档的根节点document往事件触发对象,从外向内捕获事件对象: 目标阶段:到达目标事件位置(事发地) ...
- Node.js自动本地重启服务器
node.js在本地项目中,更新 了代码 是不会自动刷新 的,要重启才能生效,每次更改代码又手动重启这样很麻烦. 可以安装 个supervisor.全局安装supervisor npm install ...
- Android源码分析(九)-----如何修改Android系统默认时间
一 : 修改Android系统默认时间 源码路径:frameworks/base/services/java/com/android/server/SystemServer.java 主要变量EARL ...
- 【转】解决Oracle 11g在用EXP导出时,空表不能导出
一.问题原因: 11G中有个新特性,当表无数据时,不分配segment,以节省空间 .insert一行,再rollback就产生segment了. 该方法是在在空表中插入数据,再删除,则产生segme ...
- Django框架(三)-- orm增删改查、Django生命周期
一.orm介绍 1.什么是orm ORM即Object Relational Mapping,全称对象关系映射. 2.使用orm的优缺点 优点: 不用写SQL语句 开发效率高 缺点: SQL的效率低 ...
- CPU使用率与负载的爱恨情仇
今天有一个电话面试,面试官问我:CentOS怎么查看CPU负载?我说:看top的第一行有load average.面试官又问:为什么从这就判定是负载高呢?依据是什么呢?然后... 然后我就尴尬了,挂了 ...
- spark 修改默认log4j.properties 配置
spark-submit \ --files ${CONF_DIR}/log4j-driver.properties,${CONF_DIR}/log4j-executor.properties \ - ...