一.互联网广告特征project

博文《互联网广告综述之点击率系统》论述了互联网广告的点击率系统,能够看到,当中的logistic regression模型是比較简单并且有用的,其训练方法尽管有多种,但目标是一致的。训练结果对效果的影响是比較大。可是训练方法本身,对效果的影响却不是决定性的,由于训练的是每一个特征的权重,权重细微的区别不会引起ctr的巨大变化。
在训练方法确定后,对ctr预估起到决定性作用的是选用的特征。

1.1特征选择与使用

做点击率预估须要双方面的数据,一方面是广告的数据,还有一方面是用户的数据,如今全部的数据都有。那么工作就是利用这双方面的数据评估用户点击这个广告的可能性(也就是概率)。
用户的特征是比較多的。用户的年龄。性别,地域,职业。学校,手机平台等等。广告的特征也非常丰富,如广告大小,广告文本。广告所属行业,广告图片。还有反馈特征,如每一个广告的实时ctr。广告跟性别交叉的ctr。怎样从这么多的特征中选择到能刻画一个人对一个广告的兴趣的特征。是数据挖掘project师的一个大难题。

选中了特征,还须要注意特征的选择方式。比如,假设单独把年龄作为一个特征,终于能训练出来啥吗?由于年龄相加相减是没有意义的,所以仅仅能把每一个年龄做为一个特征,可是光这样能够了吗?怎么用特征。是广告算法project师的一个大课题。

1.1.1 选择特征

什么样的特征适合用来预估ctr?这个问题是非常多广告算法project师的须要考虑的。

机器学习算法最多会大谈模型,对于特征的讨论非常少涉及。真正的应用中,多数数据挖掘project师的工作都是在想特征,验证特征。

想特征是一个脑力加体力的活,须要不少的领域的知识,更让人郁闷的是,工业界并没有一整套想特征的办法,工业界有的仅仅是验证特征的办法。对于互联网广告业,就简单说说通用特征怎么来的吧。

首先说年龄这个特征,怎么知道它跟点击率有关系?如今直观的解释是。年轻人普遍喜欢运动类的广告。30岁左右的男人喜欢车,房子之类的广告。50岁以上的人喜欢保健品的广告。能够看到,选择年龄作为特征的理由是基于对各个年龄段的人喜欢的不同类型的东西的一个粗略的划分。是一个非常主观的东西。

再说性别这个特征。直观的感觉是。男性普遍喜欢体育类的。车类的,旅游类广告,女性普遍喜欢化妆品,服装类的广告。

这也能够看到,选择性别作为特征也是基于相似的理由。就是觉得男性和女性大体会喜欢不同的东西。
对于地域这个特征。这下就学问多了,华南的人在比較喜欢动漫和游戏,华北的人喜欢酒品和烟?
在广告方面的特征,广告的图片大小,广告前景色背景色真的能影响人的点击吗?这事实上都是一种推測。

图片里面是一个明星还是一个动物之类的因素也能够考虑。
总之。想特征的这个事情基本没多大谱,仅仅能天南地北地想象。还要多了解各行各业的知识。以便想到很多其它的特征,哪怕某个特征跟人关系并不大,也得好好验证一番。这基本上跟男人为回家晚想借口一样,得有借口要想着怎么解释得好听点,没借口就要想借口。
想到了特征,就要验证和进行推断。
验证特征的办法多,有直接观察ctr,卡方检验,单特征AUC等。

直接观察ctr是个非常有效的方法,如依据投放记录,化妆品的广告在女性上面的点击率就比在男性上面的点击率高非常多。说明性别这个特征在化妆品格业是有预測能力的;又如体育用品的广告在男性上面的点击率也比女性高,说明性别这个特征在体育行业也是有预測能力的,经过多个行业的验证。就觉得性别这个特征能够用了。

年龄这个特征的评估类型,主要是观察一个广告在不同年龄段的点击率是否有差别,再观察不同广告的点击率在不同年龄段的分布是否不一样。假设都有差别。说明年龄这个特征就能够用了。
在实际的使用中发现。性别这个特征比較有效,手机平台这个特征也比較有效。地域和年龄这两个特征有一定效果,但没有前两个那么明显。跟他们的使用方式可能有关。还须要进一步挖掘。
同一时候,实际使用中也发现,广告反馈ctr这个特征也非常有效。这个特征的意思就是当前的广告正在投放,已经投放了一部分了。这部分的点击率基本能够觉得是这个广告的点击率了,也能够觉得是这个广告的质量的一个体现,用来预估一个流量的ctr是非常有效的。

1.1.2 特征的处理和使用

选择得到特征。怎么用也是一个问题。

先说需求,事实上预估ctr要做的事情是以下的图的工作——计算一个用户/广告组合的ctr。

上面已经选好了特征,暂定有广告的反馈ctr,用户年龄,性别三个特征。
一、离散化
反馈ctr是一个浮点数。直接作为特征是能够的,如果1号特征就是反馈ctr。相应年龄来说就不是这样了,由于年龄不是浮点数。并且年龄的20岁跟30岁这两个数字20,30大小比較是没有意义的。相加相减都是没有意义的,在优化计算以及实际计算ctr是会涉及这两个数字的大小比較的。如w.x,在w已经确定的情况下,x的某个特征的值是20,或者30,w.x的值相差是非常大的。哪怕用逻辑化公式再比較,得到的值也是比較大的,可是往往20岁的人跟30岁的人对同一个广告的兴趣差距不会那么大。解决这种情况的方法就是,每一个年龄一个特征,如总共仅仅有20岁到29岁10种年龄。就把每一个年龄做一个特征。编号是从2到11(1号是广告的反馈ctr),如果这个人是20岁,那么在编号为2的特征上的值就是1,3到11的编号上就是0。这样,年龄这一类特征就有了10个特征。并且这10个特征就是相互排斥的,这种特征称为离散化特征。
二、交叉
这样看起来就能解决上面的问题了,可是够了吗?
比方一个人是20岁。那么在编号为2的特征上面,它一直都是1,对篮球的广告是1。对化妆品的广告也是1,这样训练的结果得到的编号为2的权重的意义是——20岁的人点击全部的广告的可能性的都是这个权重,这样事实上是不合理的。

有意义的应该是,这个20岁的人,当广告是跟体育相关的时候。它是一个值;当广告跟保健品相关的时候。它又是一个值。

这样看起来才合理。假设这个不够深刻,基于跟上面相同的道理,性别这个特征也是一样的,假如也做了上面的离散化操作。编号是12和13,12是男性,13是女性。

这种话,对于一个男性/体育广告组合来说,编号12的特征值为1,男性/化妆品的组合的编号12的特征值也是1。这样也是不合理的。
怎么做到合理呢?以上面的性别的样例来说。编号12的特征值不取1,取值为该广告在男性用户上面的点击率,如对于男性/体育广告的组合,编号12的特征的值为男性在体育广告上面点击率,这样。编号为12的特征就变成了一个浮点数。这个浮点数的相加减是有意义的。
这种做法称为特征的交叉,如今就是性别跟广告的交叉得到的特征值。

还有非常多其它的方式能够进行交叉。眼下工业上的应用最多的就是广告跟用户的交叉特征(编号为1的那个特征)、广告跟性别的交叉特征,广告跟年龄的交叉特征,广告跟手机平台的交叉特征,广告跟地域的交叉特征。假设做得比較多,可能会有广告主(每一个广告都是一个广告主提交的一个投放计划。一个广告主可能会提交多个投放计划)跟各个特征的交叉。
三、连续特征变离散特征
做到的交叉的特征值就足够了吗?答案还是不一定。

如编号为1的那个特征。就是广告本身的ctr,如果互联网广告的点击率符合一个长尾分布,叫做对数正态分布,其概率密度是下图(注意这个是如果,不代表真实的数据,从真实的数据观察是符合这么样的一个形状的,好像还有雅虎的平滑的那个论文说它符合beta分布)。

能够看到,大部分广告的点击率都是在某一个不大的区间内的,点击率越高的广告越少,同一时候这些广告覆盖的流量也少。换句话说,点击率在0.2%左右的时候。假设广告a的点击率是0.2%。广告b的点击率是0.25%,广告b的点击率比广告a高0.05%,事实上足以表示广告b比广a好不少;可是点击率在1.0%左右的的时候,广告a点击率是1.0%。广告b的点击率是1.05%,并没有办法表示广告b比广告a好非常多。由于在这0.05%的区间内的广告并不多。两个广告基本能够觉得差点儿相同的。也就是点击率在不同的区间,应该考虑是不同的权重系数。由于这个由广告点击率组成的编号为1的特征与这个用户对广告的点击的概率不是全然的正相关性,有可能值越大特征越重要,也有可能值增长到了一定程度,重要性就下降了。
对于这种问题,百度有科学家提出了对连续特征进行离散化。他们觉得,特征的连续值在不同的区间的重要性是不一样的。所以希望连续特征在不同的区间有不同的权重,实现的方法就是对特征进行划分区间,每一个区间为一个新的特征。
详细实现是使用等频离散化方式:1)对于上面的编号为1的那个特征。先统计历史记录中每条展示记录中编号为1的特征的值的排序。如果有10000条展示记录,每一个展示记录的这个特征值是一个不同样的浮点数,对全部的展示记录依照这个浮点数从低到高排序。取最低的1000个展示记录的特征值作为一个区间。排名1001到2000的展示记录的特征值作为一个区间,以此类推,总共划分了10个区间。2)对特征编号又一次编排,对于排名从1到1000的1000个展示记录,他们的原来编号为1的特征转变为新的特征编号1,值为1;对于排名是从1001到2000的记录,他们的原来编号为1的特征转变为新的特征编号2,值为1。以此类推,新的特征编号就有了1到10总共10个。

对于每一个展示记录来说,如果是排名1到1000的,新的特征编号就仅仅有编号1的值为1,2到10的为0,其它的展示记录类似。这样,广告本身的ctr就占用了10个特征编号,就成为离散化成了10个特征。
等频离散化须要对原有的每一个特征都做,也就是原来的编号为1到13的编号,会离散化成非常多的编号,假设每一个特征离散化成10个,则终于会有130个特征。训练的结果w就会是一个130维的向量,分别相应着130个特征的权重。
实际的应用表名。离散化的特征能拟合数据中的非线性关系,取得比原有的连续特征更好的效果,并且在线上应用时,无需做乘法运算。也加快了计算ctr的速度。

1.1.3 特征的过滤与修正

上面提到。非常多特征事实上是反馈的特征,如广告反馈ctr,广告与性别交叉特征。这些特征本来能够通过历史展示日志的统计得到。但有些广告本来展示次数非常少,在男性用户上展示就更少,这时要计算广告与性别交叉的ctr是非常不准确的。须要对这个特征进行修正。详细的修正方法能够參考博文《广告点击率的贝叶斯平滑》。
经过修正后的ctr再做特征,实际线上效果有了比較大的提升。

假设使用的特征又很多其它了,有了学校跟广告交叉特征什么的。离散化后有了上万的特征,这下就会产生特征过多导致的各种问题,如过拟合等。

解决问题的方法一种是离线的数据评估,如用ctr的区分性。还有一种就是利用正则,特别是L1正则,经过L1正则训练的得到的权重向量,当中某些特征假设对点击率预估预測性不强,权重会变成0,不影响预估。这就是特征过滤。详细的有关L1的一些论述与实现參看博文《从广义线性模型到逻辑回归》《OWL-QN算法》和《在线学习算法FTRL》。

致谢

多位Linkedln、百度公司的研究员无私公开的资料。
多位博主的博客资料。

參考文献

[1] Ad Click Prediction: a View from the Trenches. H. Brendan McMahan, Gary Holt et al,Google的论文
[2] http://www.cnblogs.com/vivounicorn/archive/2012/06/25/2561071.html @Leo Zhang的博客
[3] Computational Advertising: The LinkedIn Way. Deepak Agarwal, LinkedIn Corporation CIKM

广告点击率预估中的特征选择相关推荐

  1. 【总结】广告点击率预估中的特征选择

    互联网广告综述之点击率特征工程 一.互联网广告特征工程 博文<互联网广告综述之点击率系统>论述了互联网广告的点击率系统,可以看到,其中的logistic regression模型是比较简单 ...

  2. 大规模推荐引擎和广告点击率预估引擎中的TopK计算

    转自:https://chuansongme.com/n/2035198 推荐引擎的研究结果成千上万,绝大部分工作都来自于矩阵分解或者类似,在针对用户和Item分别训练出特征向量之后,根据向量内积计算 ...

  3. 微信公众号广告点击率预估效果优化

    [转载]微信公众号广告点击率预估效果优化_腾讯大数据 http://data.qq.com/article?id=2914 1.背景 点击率预估(pCTR)是广告投放过程中的一个重要环节,精准的点击率 ...

  4. 效果广告点击率预估实践:在线学习

    效果广告点击率预估实践:在线学习 原创 2016-03-24 腾讯大数据 腾讯大数据 1.引言 技术钻研如逆水行舟,不进则退.公司的广告业务发展非常迅猛,有目共睹,激烈的外部竞争和客户越来越高的期望, ...

  5. kaggle案例:广告点击率预估+LR

    一.业务背景 传统广告与在线广告区别? 传统广告: 类似电视广告,报纸媒体.杂志.广播.户外媒体等. 在线广告: 类似百度搜索广告,facebook页面展示广告. 区别:在线广告更多与用户相关,例,在 ...

  6. 对“科大讯飞2021丨广告点击率预估挑战赛 Top1方案(附完整代码)_Jack_Yang的博客-CSDN博客”的补充。

    这篇文章的初衷是针对科大讯飞2021丨广告点击率预估挑战赛 Top1方案(附完整代码)_Jack_Yang的博客-CSDN博客进行补充. 博客的信息量很少,对任务背景的介绍也不太对,说实话令人费解.我 ...

  7. 业余草推荐阿里妈妈自研广告点击率预估核心算法MLR

    业余草推荐阿里妈妈自研广告点击率预估核心算法MLR. 小编觉得CTR(广告点击率)预估的能力对于广告系统的意义和重要性,类似于在证券市场上预测股价的能力,优秀的CTR预测,通向美好和财富...(以下转 ...

  8. 计算广告(一)【Ad Click Prediction: a View from the Trenches】工程实践视角下的广告点击率预估

    计算广告(一)Ad Click Prediction: a View from the Trenches --工程实践视角下的广告点击率预估 这是谷歌发表于KDD2013的一篇文章,从年份来看,已经有 ...

  9. 大数据建模之广告点击率预估

    一.数据和样本 广告点击率(click through rate,CTR)预估的问题通常被转化为一个分类问题:在给定网民 u(user).广告 i(item).环境 e (environment) 的 ...

最新文章

  1. 用了三年 ThreadLocal 今天才弄明白其中的道理
  2. oracle_dataGuard_11G
  3. 转行AI成功的秘诀只有一个,那就是……
  4. C# 修改项目文件夹名称完全版
  5. 解决Firefox已阻止运行早期版本Adobe Flash
  6. phpstudy下载、安装、配置、网站部署、卸载(windows下php、apache、nginx环境测试)
  7. hadoop 替代方案_如何通过比较替代方案做出有效的决定
  8. dubbo源码系列之filter的前生
  9. PowerPoint 消除所有动画VBA指令
  10. 我为什么离开华为加入ThoughtWorks(思特沃克)
  11. html显示vbs变量,VBS 读取 对象某属性已连接的变量的变量名
  12. 流量直升机-千牛插件功能列表
  13. Android版优酷网闪亮登场
  14. 论文笔记:Bag of Tricks for Long-Tailed Visual Recognition with Deep Convolutional Neural Networks
  15. BNUZ-ACM 2019国庆新生欢乐赛 E.如风般奔跑(题目详解+代码)
  16. 【转】程序员10大境界【走在路上,潜心修行】
  17. PPM、PCM和PWM的区别, I2S与pcm的区别
  18. http://39.98.219.132 题库标准答案(题库序号:179)之判断素数
  19. leetcode 695. 岛屿的最大面积 python
  20. [tips] 1.2 优麒麟ubuntu 20安装ROS2 Foxy版本

热门文章

  1. SH7218T拆解手记(12)IWNN(日文输入)的移植
  2. 近年创业目睹之怪现状
  3. 【Crypto】BUGKU-抄错的字符
  4. 加快Kettle插入速度的小技巧
  5. 【Leetcode】825. Friends Of Appropriate Ages
  6. 自己写一个PRISMA 让两张图片融合起来
  7. 2016ACM/ICPC亚洲区大连站-补题
  8. CloudFoundry源码分析:NATS
  9. Spring Boot系列之Thymeleaf模板布局
  10. Linux中DNS服务器地址查询命令nslookup使用教程