数据与广告系列十:开启机器学习之路

数据分析学习社
数据分析学习社
数据分析学习社
348
文章
0
评论
2021-05-2009:44:13 评论 464 3652字
摘要

接下来的内容里,将会出现大量算法,或者更严格意义上是机器学习的东西,当然,不会纯粹的理论上的东西(太理论的东西我也不擅长),依然会结合广告的整个机器学习应用场景来看,很多东西我也不会,边走边看。

 

数据与广告系列十:开启机器学习之路

 

01写在之前

上一篇《数据与广告系列九:有意思的本地化广告》,不知不觉中《数据与广告系列》已经更到了第十篇了,以均篇5000的字数来看,也有5万多字了。

在最近的一年多时间里,突然发现散篇写的相对偏少些了,不知不觉中自己也习惯的去从更全局的角度去组织知识结构,然后形成偏系统化的知识结构。除了目前的《数据与广告系列》九篇,还有《推荐系统系列》六篇,《躁动的季节里非典型跳槽指南》四篇,《数据与业务系列》三篇,《读书清单系列》四篇。

而当前《数据与广告系列》从目前的角度来看,还有继续下去的空间。这个情况,或许也是自己对于相关知识结构的一种更体系化的思考,应该算是一个好事吧。以前是个写"短篇小说"的,现在终于开始写"中长篇"了。

02关于算法的执念

在之前的规划里,这个系列应该从广告的起源,到涉及到技术架构,再到推荐系统的交叉结合对比,再到各个不同类型的广告业务场景,这么一个结构逻辑。所以,原定这个系列下一个内容,极有可能是涉及到游戏广告的垂直领域方面,也有计划去做这块的深入探索。

但是,从写完《推荐系统系列》之后,再到写到《数据与广告系列》第九篇,总感觉整个知识结构体系里缺了什么。直到最近才猛然想起来,是的,是算法维度的东西。

以数据为核心,再到业务的应用场景,没有毛病,但是始终是少了最重要的一环,那就是算法。虽然在《推荐系统系列》里,也涉及到了一些常规的推荐算法逻辑,甚至是代码层级的东西,但始终是太过于入门,而非正统的算法以及机器学习的陈述逻辑和知识结构,说白了就是,那个逻辑还是以初步架构起推荐系统整体结构为主的知识结构逻辑,而非最终的形态。

换句话说就是,那始终是低level的东西,而我们总是要有更高追求的。

所以,接下来的内容里,将会出现大量算法,或者更严格意义上是机器学习的东西,当然,不会纯粹的理论上的东西(太理论的东西我也不擅长),依然会结合广告的整个机器学习应用场景来看,很多东西我也不会,边走边看。

但我能保证的是,只有我吃透的东西才会抛出来给大家,并且将尽可能的结合广告实际的场景,然后拿更贴合实际的数据(kaggle上的相关数据集),然后一边聊广告,一边来手撕机器学习代码,顺带还可以聊聊人生。

03广告中的机器学习应用场景

既然这是广告算法相关的延申,当然少不了来看算法,但不是这篇,开篇总不能上来就手撕代码,我们先来看看机器学习在整个广告流程里,到底可以做些什么事,然后才知道后续我们的规划逻辑需要进一步去学习什么,了解什么。

广告的排序

回忆一下第七篇《推荐与广告技术架构》中广告技术的架构图,其中非常重要的一环就是广告的排序。所以,说到算法在广告中的应用,第一个能想到的就是通过机器学习做到广告的最优排序。

再回忆一下广告排序逻辑上会涉及到几个因素:出价,上下文匹配,CTR预估。这本身就是一个多元素组合最优排序的问题,里头CTR预估又是广告领域里头最核心需要解决的问题。

因为很多广告系统里,可能做不到上下文理解,出价逻辑也可以做的稍微粗糙一点,但是对于CTR预估,都是重中之重,首先需要解决的问题。CTR预估本质上就是对于候选曝光用户,针对于每个广告候选池做点击概率的预估计算。所以是一个非常典型的偏回归的问题。

上下文理解

延续上面的话题,上下文理解又或者说上下文的匹配。简单来讲就是,计算环境因素与广告因素的匹配度的问题,或者说相关度的计算。当然,匹配度只是解决上下文理解的一种方式或者说这类机器学习的模型可以解决这个问题。

其实还有其他方式可以去解决的,比如当你样本累计够多的时候,也不单纯计算内容的相关度,也可以从推荐系统的思路去思考,即大量的广告环境与广告曝光关系数据,用户在这个组合下的ctr数据。这不是一个非常典型的关联分析的场景吗!将上下文的环境与广告,通过历史信息,做关联分析,而非基于内容相关性分析。

从目的的角度上来说,最终都是期望用户点击广告,所以不管是关联分析还是相关性分析,都是一种途径。

lookalike人群扩展

人群扩展是广告领域里典型的需求场景,说的更直白点就是,当我要的人,明面上没有这么多的时候怎么办?给我预测一下,扩展一下呗。

所以,lookalike本质上拿到核心用户(所谓核心用户,就是已经验证过的高转化人群),然后计算类似的用户(不是严格意义上的内容相似,而是最终转化目标相似),这样就达到了扩展的目的。

而通常扩展的原始用户则是用户圈选定向的那一拨人,但是显然定向圈定的人群与其实际需求曝光量级有差距。还有一种更常见的扩展场景,就是广告主导入自身积累的高转化核心人群,这就是最精准的定向,然后平台负责帮我找到相同的人。

回归到机器学习,你可以认为这是一个相似用户计算的场景,二值判断,概率计算,最最简单,你用LR就能满足你的需求了。但也不止这么简单,因为很多时候你会发现你的训练样本可能是数百万,甚至是上千万的数据集,然后如果维度不小心做到几十万维,几百万维,甚至是千万级,那么你要解决的问题就多了。

标签定向

我们知道,定向算是广告体系里的人群召回阶段,从基础的男女性别,到更高纬度的商业兴趣,诸如你要不要减肥,是不是要贷款等,而这些最具象化的形态就是用户标签。

每一个成熟的广告平台,都有一个完整且相对精准的标签体系,每个其体系里头的人都或多或少能打上若干个标签。所以,总有某个合适的广告场景中,平台能把你卖出去,卖个好价钱。

回忆一下之前的文章,广告的本质就是卖流量,卖人。虽然有点残酷,但这就是终极的本质。而将人标签化,就是将人分门别类,就跟超市里超市大妈把不同的货品放到不同类目货架上一个理儿,方便顾客"挑选"(太佩服自己了,竟然写的这么有哲理,/捂脸)。

而标签的制造说简单也简单,说难也难。举个简单例子来说,最基础的性别标签,如果有场景可以收集身份证号,自然简单,但是如果没有,你靠猜?所以,这里就是典型的二值分类场景了(也有做三分类的,比如微博里,除了男女,还有诸如大把的机构属性的账号)。

除此之外,还有茫茫多数百个其他标签,各个层次的,各个细分领域的,简单的你可以通过行为规则的方式去打上一些标签。通过行为规则做判断,只要规则合理,准确性固然是可期的。但是,一方面是有显性行为的人量少满足不了你大规模曝光的需求,另一方面召回能力太差,用机器学习的专业术语叫泛化能力太差。

所以,从机器学习的角度来说,这又是典型的判别模型场景,而且是超多分类的场景。当然,你同样可以转化成二值分类,针对于每个标签,都是一个YES OR NO的答案。

当然,在实际的处理中,大部分可能只会计算一个概率值,再来做进一步的计算和判断。而基于用户行为,肯定又会遇到大量的文本,自然语言处理的东西自然是少不了的。

异常分析

所谓异常分析应该属于偏反作弊的范畴了。比如,大规模的机器点击广告,造成假量怎么办,就算不是机器,也总有一些人闲着蛋疼没事干,点着广告玩,更过分的就是那种连接投放收集信息的广告场景中或者二类电商。

填个空号是常态,打个电话过去说非本人也是正常的,二类电商中,地址都到门牌号了,名字写着"周杰伦",你是不是该犹豫了到底要不要发货呢,万一拒收来回邮费可白搭了。

广告主很忧桑,每个点击都是要扣钱的,每个被拒收的单子不单纯浪费发货精力,更重要的是来回邮费成本,都是小本生意,经不起折腾。

所以,二类电商一定是要控制主脏单率的(所谓脏单就是那种地址找不到,各种拒收的单子),而CPC那层,大量的恶意无效点击也是不可行的,这些压力最终必然会落实到平台上,平台必须要解决这一类人。

把那些有恶意广告行为的人给逮出来(有历史污点的好处理),但是那些有这方面潜力的人也得揪出来,以防后患!

从机器学习和算法的角度来看,这就是一个典型的分类场景,但这真的不是一个典型分类场景。要知道,坏人总是少数的,如果你平台上都是坏人,你的平台也不用玩了。

这是一个"大海捞针"的活计!

即,你要从数千万,甚至是数亿的用户里,捞出寥寥数十万,最多数百万的"可能的坏人"出来。这是一个典型的正负样本极度不均衡的场景,而这可是分类场景里的大忌,简直是灾难,属于非常难以处理的场景之一。

04想手撕代码吗

如上,那些只是暂时我能想到的机器学习在广告平台上的应用场景,基于我浅薄的学识,一定还有其他更多的场景需要用到机器学习去解决。

说这么多还不如,上个代码,是吧。

莫着急,既然开了机器学习这个头,代码总是有的。在接下来的篇章里,我们将沿着上面我们所说的这些场景,一个一个来了解,立足于真正的广告诉求,用kaggle里的真实数据,结合机器学习的知识来解决这些问题。

又基于我那不算靠谱的机器学习理论,所以,接下来的内容里,将会是两分广告场景,三分机器学习理论,五分手撕代码,这么一个结构,也是一个相对合理的结构,更容易理解和吸收。

 

End.

作者:黄崇远

转载如果涉及作品、版权其他问题请联系我们第一时间删除微信号:lovedata0520)

更多文章前往首页浏览http://www.itongji.cn/

 

  • 我的微信公众号
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: