原文地址:广告互联网综述之广告点击系统
如何从这么多的特征中选择到能刻画一个人对一个广告的兴趣的特征,是数据挖掘工程师的一个大难题。还需要注意特征的选择方式。
1.特征选择与使用
做点击率预估需要两方面的数据,一方面是广告的数据,另一方面是用户的数据,现在所有的数据都有,那么工作就是利用这两方面的数据评估用户点击这个广告的可能性(也就是概率)
用户的特征是比较多的,用户的年龄,性别,地域,职业,学校,手机平台等等。
广告的特征也很丰富,如广告大小,广告文本,广告所属行业,广告图片。还有反馈特征,如每个广告的实时ctr,广告跟性别交叉的ctr。
1.1 选择特征
【想特征】
机器学习算法最多会大谈模型,对于特征的讨论很少涉及。真正的应用中,多数数据挖掘工程师的工作都是在想特征,验证特征。
想特征是一个脑力加体力的活,需要不少的领域的知识,更让人郁闷的是,工业界并没有一整套想特征的办法,工业界有的只是验证特征的办法。
想特征是一个脑力加体力的活,需要不少的领域的知识,更让人郁闷的是,工业界并没有一整套想特征的办法,工业界有的只是验证特征的办法。
总之,想特征的这个事情基本没多大谱,只能天南地北地想象,还要多了解各行各业的知识,以便想到更多的特征,哪怕某个特征跟人关系并不大,也得好好验证一番。
【想到了特征,就要验证和进行判断】
验证特征的办法多,有直接观察ctr,卡方检验,单特征AUC等。
1.2 特征的处理和使用
选择得到特征,怎么用也是一个问题。上面已经选好了特征,暂定有广告的反馈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个特征就是互斥的,这样的特征称为离散化特征。
基于跟上面同样的道理,性别这个特征也是一样的,假如也做了上面的离散化操作,编号是12和13,12是男性,13是女性。
二、交叉
基于跟上面同样的道理,性别这个特征也是一样的,假如也做了上面的离散化操作,编号是12和13,12是男性,13是女性。这样的话,对于一个男性/体育广告组合来说,编号12的特征值为1,男性/化妆品的组合的编号12的特征值也是1。这样也是不合理的。
怎么做到合理呢?
怎么做到合理呢?
以上面的性别的例子来说。
编号12的特征值不取1,取值为该广告在男性用户上面的点击率,如对于男性/体育广告的组合,编号12的特征的值为男性在体育广告上面点击率,这样,编号为12的特征就变成了一个浮点数,这个浮点数的相加减是有意义的。
这样的做法称为特征的交叉,现在就是性别跟广告的交叉得到的特征值。还有很多其他的方式可以进行交叉,目前工业上的应用最多的就是广告跟用户的交叉特征(编号为1的那个特征)、广告跟性别的交叉特征,广告跟年龄的交叉特征,广告跟手机平台的交叉特征,广告跟地域的交叉特征。
三、连续特征变离散特征
点击率在不同的区间,应该考虑是不同的权重系数,因为这个由广告点击率组成的编号为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个特征的权重
1.3 特征的过滤与修正
很多特征其实是反馈的特征,如广告反馈ctr,广告与性别交叉特征,这些特征本来可以通过历史展示日志的统计得到。但有些广告本来展示量很少,在男性用户上展示就更少,这时要计算广告与性别交叉的ctr是很不准确的,需要对这个特征进行修正。具体的修正方法可以参考博文《广告点击率的贝叶斯平滑》。
经过修正后的ctr再做特征,实际线上效果有了比较大的提升。
经过修正后的ctr再做特征,实际线上效果有了比较大的提升。