推荐 - CTR排序
CTR的工作分成四部分:样本工程 -> 特征工程 -> 模型升级 -> 多产品线统一CTR预估系统
(0)写在前面:
-- -- 样本特征数据时间间隔选取:
-- -- -- 测试集和预测集时间不能交叉;特征和样本时间不交叉
-- -- -- 样本尽量靠近要预测的数据时间,模型效果可能有衰减
-- -- -- | --------7-10天特征流-------- | --------7-10天样本流 --------|-------要预测的结果---------|
-- -- 具体来说:
-- -- -- 特征:至少一周,包含周六日,当然时间越长越好,可以选取一个月
-- -- -- 样本:训练集:至少一周,覆盖周六日;测试集:可以算3-5天;
-- -- -- 预测:可以直接把所有的日志特征都提取出来,merge起来,不区分间隔
(1)样本工程:样本收集,尽量保证样本正确性(样本都被用户真是看到的)
-- -- -- 常用label:label, baiduid, time, query, rs, rs_show_type, isps, position, index
-- -- -- 选择策略:根据预测目标确定
-- -- -- -- 预测是结果页item点击情况:就以结果item点没点为准
-- -- -- -- 预测是倒流页item点击情况:就以倒流结果页有没有点
-- -- -- -- 要想让他们一直点自己的产品:就以倒流结果页有没有点击再次点击自己的产品为主
-- -- -- label选择: 尽量保证样本正确性(样本都被用户真是看到的) + 正负样本比例可以试验尝试,图文这边1:2最好
-- -- -- -- base方法:
-- -- -- -- -- 点的item都是正样本,同一个query其他所有没点的都是负样本,最后负样本要随机抽样 -> 评估时预测集上直接评估即可
-- -- -- -- -- 对于没有点击的query,不应从该query下选取样本,因为用户可能根本没有看到,当然可以从是不是点击这条结果下面的结果确认,但是太麻烦啦
-- -- -- -- 改进方法:
-- -- -- -- -- 点的item都是正样本,点击item旁边没点的都是负样本(尽量选取靠前的item,这里可以选择他前面的item和他之后紧邻的那个item) -> 评估使用随机预测集评估,不然pairwise上可能会没有区分度(相同item点击三次和点击两次可能没有区分)
-- -- -- -- -- 采样逻辑是正样本全采,负样本取第一个以及正样本前相邻的一个
(2)特征工程:特征收集:尽量保证特征是置信的
-- -- -- 通用特征:query、rs、rs来源、转移概率、query_ctr、rs_ctr、query_rs_ctr、各种相似度
-- -- -- 稀疏特征平滑,保证特征置信:
-- -- -- -- 展现置信:在线轮展最佳 -> 退而求其次贝塔分布平滑->分子分母加个常数click / ( show + 100)
-- -- -- -- -- -- 在线轮展:尽可能快地让每个item都得到充分展现,可以随机轮展,可以用ee算法,ee算法比随机轮展收敛快
-- -- -- -- -- -- -- -- ee算法:对于当前query,ee算法让所有item的ctr值都在一定区间内变动,尽量增加没有充分展现的item的ctr值,使得排在前面去。
-- -- -- -- -- -- -- -- 贝塔分布:其实就是相当于在分子和分母加了一个值,只不过这个值是预估出来的。 beta.ppf(item的点击率, 点击, 展现 - 点击 + 1)
-- -- -- -- -- -- -- -- -- 在未平滑时,相同点击率的item,展现越多,平滑后点击率越大(1:10 和 10:100,在平滑后,后者值大)
-- -- -- -- -- -- -- -- -- 对于没有发生点击的item,beta貌似预估是0,这里要看下
-- -- -- -- -- pages/viewpage.action?pageId=70997277
-- -- -- -- 位置偏移:在线轮展最佳 -> 按照位置折合一个点击率bais -> 直接丢进模型
-- -- -- -- 特征空值率/特征覆盖率:
-- -- -- 相关特征:
-- -- -- -- 点击率特征:周级别点击特征、月级别点击特征、年级别点击特征
-- -- -- -- 共现:月级别贡献率,周级别共现率,年级别共现率
-- -- -- -- 泛化特征:word2vec相似度、plsa相似度、扩充后字面相似度、svd,dnn转移特征,ffm等
-- -- -- -- -- svd:pages/viewpage.action?pageId=46722346
-- -- -- -- 倒流后特征:query分类、query倒流pv(dl_pv)、query倒流后pv点击数(dl_pv点击数)、query倒流后有点数(dl_pv有点数)、query倒流后长点数(dl_pv长点数)、dl_pv有长点数目(dl_pv有长点数目)
-- -- -- 特征评估:
-- -- -- -- 可以用模型中特征权重获得,一般0.5是表现对一般,远离0.5的都是有益特征(有区分性):大于0.5是正向特征,小于0.5是负向特征
(3)模型升级:pointwise(lr -> gbdt) -> pairwise(xgboost)-> lr 和 gbdt融合(难,所以排在后面))
-- -- -- -- online lr xgboost和lr结合
-- -- -- -- 评价指标:auc + 逆序比,其中逆序比可以看下case
-- -- -- -- pairwise:
-- -- -- 兴趣点集合pairwise:label变成q title 0/1/n -> 第三列表示点击次数,0表示没有任何点击,1表示点击结果页title,但是没有倒流,n表示又点击了通栏
-- -- 模型debug:re高频 + 人工感知 + 结合term权重分析问题
-- -- -- 筛出有问题的case:算出逆序对严重的case,分析原因
-- -- 时效性CTR:针对高频query + 周级别或者天级共现 + 点击特征
-- -- -- 只针对高频query
-- -- -- 时效性模型比非时效性模型多使用了5维周级别的共现和点击特征
-- -- -- query-item-ctr:可以只用最近10000万次展现的点击率,来模拟最近用户的兴趣需求
1、样本工程
(1)样本选取
-- -- 1、取qid下所有正样本和排序最靠前的一个负样本,其余负采样
-- -- 2、增加负采样正收益实验:即在基线采样方法(取qid下所有正样本和排序最靠前的一个负样本,其余负采样)基础上,增加正样本前一位的所有负样本
-- -- 3、图文label使用长导流点击(即是否有点(1|0)+ 导流后点击推荐产品次数,
(2)样本不均衡
-- -- 图文:保留所有正样本(只保留有正样本的qid
-- -- 点后推采样:正样本采样率为1,负样本采样率为0.01
-- -- 负样本随机采样,正负1v2
2、特征工程
(1)特征平滑
3、时效性CTR预估模型
-- 只针对高频query
-- 时效性模型比非时效性模型多使用了5维周级别的共现和点击特征
3、case-debug
(1)
浙公网安备 33010602011771号