受众定向-行为定向
行为定向
行为定向(Behavioral Targeting)
行为定向是前节所前到的f(u)的定向方式,它是对user打标签。用户的哪些行为可以对行为定向有贡献,业界也有一些讨论,我这里列出是的九种类型(按信息强度排序):
1. Transaction,交易行为,对效果广告来说它是最强的信号,这也就是淘宝直通车为什么能营利如此之多,因为Transaction数据的价值远高于其它类型。
2. Pre-transaction,个人使用的一个术语,这种行为还是在Demand Side,是指用户在购买前的一些行为,比如进行商品比价,搜索等,这种行为信息也很强。这两种行为的信息强度和有效性,在效果广告的语境下,都远高出其它七种类型一个数量级。
3. Paid search click,在搜索时的广告点击行为,
4. Ad click,普通广告的点击行为,广告的点击行为被认为是比较强的信号是因为广告本身不是一个很吸引人的事物,在广告中产生的一个点击,表示用户有明确的目的去了解这个信息。个人认为Ad Click比Paid Search Click要差一些,主要是因为采集Ad Click时的数据噪声,因为Banner广告,特别是在中国环境中,很多时候是依靠骗点击生存的,比如一个广告突然弹出,你猝不及防就点击了,或是本来看起来是链接,但用户点击,其实是一个广告。
5. Search click,在search上产生的点击。
6. Search,搜索本身,它本身也算强信号。上面这四种是信息强度第二强的四种类型,下面三种是数据量很大,但本身作用不大。
7. Share,社交网络中的分享,它表示很强的兴趣,但不Search那样主动,
8. Page View,它是网络中的主要行为,但它在大多数情况下是被动行为。比如用户在新闻网站上浏览,他挑选一些感兴趣的新闻浏览,但门户中的新闻却是由网站决定的固定数量的新闻。并且这种行为离Demand太远,比如查看钓鱼岛的新闻这个行为,很难与广告主的需求直接发生拉关系,再比如一个用户经常浏览凤凰军事,你可以通过他的行为对他打上军事的标签,但很难找到广告主愿意选择这样的标签。
9. Ad View,它在Targeting运算中是起负影响的,因为一个用户看到相同广告次数越多,他疲劳感越强。如果采用线性模型,这个行为是一个负系数。
![计算广告学-受众定向-行为定向 - quweiprotoss - Koala++s blog](http://img1.ph.126.net/oiTCeNSPqcCc-fUVGulpJw==/6597631617099073168.jpg)
计算行为定向的框架是很简单的,t(i)(u)表示用户u在i上的标签。先收集用户的原始行为,比如图中示例给出的收集了用户的浏览行为PV,浏览过什么页面,搜索行为search,搜索了哪些关键词,广告点击ad click的内容,点击了哪些广告。然后对每一种行为打标签。即每种原始行为会转化成一组标签,比如PV中用户的访问过钓鱼岛新闻,那么可能会被打上军事和新闻标签。Search行为,比如用户搜索过京东商城,可能会被打上电商的标签。Ad Click,因为广告本身就有品类,所以打标签很容易。用户的标签是将稳中有各种行为所打的标签加权累加的结果,比如在标签1上,PV的标签值为2,Ad Click的标签值为1,相加得到用户在标签1上的和为3。这种方法看上去非常na?ve,但实际系统中大多采用这种方法,在论文中会将它解释成相对复杂的过程,比如用Gamma,Poisson Process描述,但本质上是类似的。Yahoo!的一个技术领导经常说到:在海量数据上,你首先要做到的一个Shallow的挖掘,让系统运行起来,一开始就使用复杂的模型,不容易在工程上使用。虽然这个框架看上去很简单,但是对PV和Search打标签本身就涉及到机器学习中的分类问题,所以它并不非常简单。
再强调一点,越是信号强的行为,它的数据量往往就会有限制,比如Transaction比起PV就小几个数据级,再比如Ad Click虽然它的强度还可以,但它的量非常少,所以这种行为用途不大。
行为定向的其它问题
Sesson Log
在工程上,我们需要各种的行为日志,这些日志最有效的组织方式是以用户ID为key的形式,比如在PV这种行为上,记录用户看过的网页URL是哪些,分别有几次。以用户ID为Key听上去非常na?ve,但如果注意这点,会给后面工程上带来很多的便利。这样对targeting时就可以每个记录独立计算,不需要一些全局的计算。
多日累积方式
我们在进行用户行为定向时,会使用多天的数据,我们往往用整周数,比如28天,35天。但这样有一个问题,用户每天计算出的标签并不一致,就产生了如何对多天的标签进行累加的问题。有两种方式来处解决这个问题
1. 滑动窗口方式,f为long-term标签,下标为日期。将每天的标签加起来就可以了。但这种方式的问题是要保存前T天的数据。
2. 时间衰减方式,它是昨天的累加值乘上一个衰减因子(可能是0.95),再加上今天的标签值。这种方式空间复杂度低,仅需昨天的f和今天的t。
我认为没有必要讨论这两种方法的优缺点,因为效果应该是差不多的。个人推荐时间衰减方式,因为它不需要保存前T天的所有数据。另一个问题是T值如何得到,T的取值是与标签的性质有关,比如汽车标签,它的T值应该取的比较大,因为购车是一个长期的过程,但如果是运动鞋,因为比买鞋到决策是一个很短的时间。所以对不同的标签应该有不同的T,在不同的标签上自动学习出T,这方面的讨论还不多,一般是按经验来做。但这里是一个有很大优化空间的地方。
受众定向评测
行为定向既然是一个机器学习的问题,那我们就需要一个数据评测的方法。
在打标签的过程中,需要设置阈值,比如用户在T天只访问过汽车网站一次,就对他打上汽车标签是不合理的,阈值的设置有两方面的原因,1. 因为标签要存于线上的KV数据库,如果不设阈值,数据量会非常大,并且没什么必要。2. 因为长尾的行为是有噪声的,加载这些数据可能没有好处。所以对一个用户是不是打汽车标签,是由设置的阈值决定的,随着阈值调的越来越小,被打上汽车标签的人群就越多,而在汽车品类上的效果越来越低,图中是以CTR为效果。图中的曲线也是符合人的直觉的,这个曲线在评测Targeting效果是有指导意义的。
图中有几个要注意的地方。1. 在reach到100%的人群时,即阈值为0的时候,实际就是没有进行Targeting的情况,所以reach=100%的时候它的CTR取值是一个固定值,与所用的模型无关。Targeting的目标就是让曲线尽量向上,在工程中,因为数据或是算法的原因,这个曲线不一定是单调减的曲线,可能前面反面低,前面低是一个很危险的状态。如果取阈值较大时,效果反面不如reach=100%的时候,那说明这个标签是没有价值的。2. 在数据和算法比较合理时,曲线可能有一个拐点,拐点的物理含义是在拐点之前的是真正属于这个品类的用户,他们的点击率较高,而拐点之后点击率会迅速下降。知道这个拐点,就可以知道大概该品类真正有价值的用户大概有多少,这对GD广告中销售流量是有指导意义的。