我们要解决的几个问题

  • 学习目标的认识
  • 召回
  • 粗排的学习目标
  • 粗排评价标准
  • 精排的学习目标
  • 精排评价标准
  • 精排”自嗨”乱象

学习目标的认识

学习目标可以理解为训练样本是什么。

召回

分为主路和支路。

主路主打个性化和向上管理。支路主打查漏补缺。

主流召回评价:采用粗排评价方式,ndcg。看和粗排的序的ngcg指标。

支路:也会计算auc等,仅仅参考,实际还是看线上效果看是否有效。

召回融合:

1.根据经验,各个召回路线排个序,先取哪一个。前面有的,后面再有,删除

2.前面有的,后面在有,可以优先往前排。

3.前面有的,后面在有,可以取平均分。

粗排的学习目标

粗排学习目标是向精排看齐。粗排的下一个阶段是精排,精排就像粗排的领导,粗排看中的,排序好的,如果领导精排都看不中,排序不好,那么粗排就是失败的。粗排排的好,精排也排的好,相当于粗排帮精排排忧解难了。

粗排目的

1.给系统减负

主要是降低精排的系统压力

2.提高业务效果

粗排评价标准

1.ndcg: 评估2个排序相似度。 精排的输出让粗排再过一遍。看下是否相似。

精排的学习目标

可以理解为后验,即真实的show和click,show了,以有无点击作为正负样本。

精排评价标准

auc/gauc

gauc

w指的是show。gauc偏向活跃用户。

精排”自嗨”乱象

精排的训练样本来自于线上真实的show和click,线上真实落盘的show和click来自于精排的预估,所以存在学习的是自己产生的,有点困在牢中,容易陷入自嗨现象。产生的问题,就是有的单子拿不到量。如果一开始拿不到量,那么训练和预估依然是感觉良好的。

解决自嗨想象办法:

1.策略干预,针对新单子给与一定的探索

2.随机流量,给与一定的比例,不通过任何模型的随机量

精排的在离线对比和后续机制

精排的预估好坏可以体现在离线和在线上,上线前的离线评估标准有auc,gauc,logloss等等。 auc一般可作为评判标准,但是不唯一,ab离线实验对比,auc差不多,这时候gauc就会起到重要的对比作用。 如果auc,gauc都差不多,看logloss。不过一般,auc,gauc,和logloss的表现都是一样的关系,要好就都好。当然有一些特殊情况,如果auc或者gauc或者logloss出现特别异样的情况,大概率就是或样本,或特征或某个地方出现了问题。

在线主要看线上的auc,gauc,以及ecpm,ecpm_gap等。auc和gauc主要用来看,是否线上线下一致性问题。这块一致性问题会比较复杂。有多种办法可做。一种是刚刚上线,模拟线上真实的请求流程,从特征取线上的特征,模型用线上此刻真实的模型,用线上的模型胃入线上的特征,看预估结果,是否和线上落盘的预估值一致,这里看一段时间的量,取个几万条看下一致率即可。这是第一种办法。第二种办法是线上落盘的预估值和真实值,可以计算在线的auc,看下在线的auc是否和离线时候的auc在一个水准,如果是,则可以判断在离线是一致的。以上两种办法对应着不同的公司的做法取向,没有孰对孰错之分,只是看什么合适自己。

精排预估完,在离线一致下,auc都很高,那么恭喜你。 此时不要得意。这时候看下ecpm_gap情况,即使auc很高,ecpm_gap可能也很大。真实ecpm反应的是真实的收入,不一定会提升。所以需要针对预估的ecpm进行调整,去对齐真实的ecpm。针对预估ecpm调整的办法有很多,保序回归,以及根据预估分,一般取阈值0.03去调整,这里可以调整。根据预估分分阶段去调整预估值。如果小于一个阈值不变,如果高于一个阈值,则tc/(1+log(p)) 去调整计算。做的更细致的时候,不仅要看大盘,还需要看下每个单子的预估情况,大概率是头部,腰部单子都预估的很好,同时大概率是尾部单子预估的不好。这时候有很多种解决办法。