一.概况
定义
是推荐中最核心的算法之一
对每次广告的点击情况做出预测,预测用户是点击还是不点击
就是预测点击与否的而分类算法,成功的关键之一就是样本的准确性
对于正样本,一般可发挥的空间不是很大,最多就是卡一个停留时长,将属于误点击的正样本剔除
对于负样本,CTR预估是非常讲究真实负样本的,即一定是给用户真实曝光过而被用户忽略的item,才能作为负样本
作用
CTR是为广告排序用的,而排序是竞价广告的核心,连接了点击和曝光
广告平台关心自己的流量价值,即自己的流量曝光卖的贵还是便宜,一般用ECPM(earning cost per mille)这个指标来衡量,即每1000次曝光带来收入
广告主一般按点击进行扣费,即广告主通常关心结果,出价原则就看一个点击需要花多少钱
广告平台需要把点击出价转化成ECPM进行扣费和排序
CTR架起了从点击到曝光的一座桥梁,为排序提供基础
推荐系统也需要CTR预估来排序
意义
有针对性地对个体单独预估,通过某个模型用交叉特征看每一个个体的点击率,从而下一个拥有该特征的人群来访问的时候,就能相对更加准确地预估了
过程
决定广告点击率的因素有三类
广告主侧:比如广告创意,广告文案,广告的表现形式,广告主行业
用户侧:比如人群属性(年龄,性别,地域,兴趣,活跃度等)
广告平台侧:比如不同的广告位,投放时间,竞价策略,流量分配机制,频次控制策略等
这些决定因素在CTR预估中被称为特征,CTR预估的第一步就是特征工程,即把这些特征找到并数据化,列出不同的特征可能对CTR产生的影响
确定了特征之后就需要对这些特征进行处理,即把特征数据化,比如把所有的特征变成0和1的二值化,把连续的特征离散化,把特征的值平滑化,把多个特征向量化
特征完成后就开始建立模型:尝试新模型,训练不同的模型参数
特征
1.统计相关特征
①用户统计特征
用户在各属性ID上,历史点击行为的target mean(平滑)
用户在属性ID上的信息熵,共现次数,比例偏好等统计特征
②商品统计特征
各属性ID,历史点击行为的target mean(平滑)
各属性ID,曝光次数统计
2.序列相关特征:Embedding特征
由word2vec生成的用户,广告等ID的embedding(取平均)
穿越特征(强)
基本构造方法就是计算距离下一次行为的时间差
这么做的原因很好理解,假如一个人点击了某个广告,那么必然会停留一段时间,那么距离下一次的行为就会久一点,差值也较大。相反,连续两次行为的时间间隔应该很小,距离上次行为的时间差也是有效的,根据APP推荐规则,在点击广告后下次推荐的也是相关广告,从而再次点击的可能性较大,可以单特征或组合,行为可以间隔1次,也可以2次,3次等
data.groupby(col)['data'].shift(-gap)
data['ts_{}_{}_diff_next'.format('_'.join(col),gap)] - data['data']
data.groupby(col)['data'].shift(+gap)
data['date'] - data['ts_{}_{}_diff_last'.format('_'.join(col),gap)]
如何使用源域用户行为数据?
根据日期(day,hour),统计用户行为次数(count),用户对应类别的属性数(nunique)
根据日期(day,hour),构建用户交互类别的属性,作为多值特征处理
针对多值特征,可以结合CountVectorizer和TfidfVectorizer进行处理,如果维度较多,可以再结合pca,svd,nmf等方法进行降维处理
模型
逻辑回归:使用最广泛的模型,一般结合onehot encoding之后的特征使用
GBDT:一般配合连续值特征使用
FM:输入的每个特征除了学到一个对应的权重外,还能得到一组权重存在于vector中,当需要把特征a和特征b进行组合时