精排GAUC与业务指标不一致问题
背景
在精排模型迭代时,经常会遇到在离线指标不一致的问题,这里根据过往经验总结下遇到的问题及原因。
离线GAUC和在线GAUC不一致
场景一:离线GAUC涨,在线GAUC降
模型主场效应
训练样本一般是曝光空间,而线上预估时打分空间比曝光集合要大几个数量级,模型在不一致的空间上泛化性多多少少会有些问题。在这部分未曝光样本空间里,有些候选会被高估进而得到曝光机会,这些曝光就会获得用户的反馈,进而进入训练集通过模型学习来修正。实验模型只有很少的流量,所以获得的反馈很少,而基线模型流量大,获得的反馈更多,所以实验模型一直打不过基线。
解决办法: 1)增大实验流量; 2)增大实验模型训练周期
这种情况经常发生在模型打分分布变化较大时,比如框架迁移、模型重大升级这类动作,因为打分分布变化大会导致曝光差异变大。
场景二:离线GAUC降,在线GAUC涨
打分靠前的曝光机会更多,更易获得用户反馈,所以模型在自身的流量上的评估结果可能会更好。
比如以下案例:
基线:A模型,在线90%流量。
实验:B模型,在线10%流量。
精排排序候选1000个,[I1, I2, ..., I1000],打分排序后吐出10个展示给用户。
A展示了[I1, I3, I4, I6, I38, I194, I285, I396, I823, I956],其中获得点击的是[I1, I38]。
B展示了[I3, I5, I194, I38, I396, I285, I1, I733, I823, I956],其中获得点击的是[I3, I94]。
那么A模型的在线GAUC是0.8125,B模型的在线GAUC是0.9375,既实验模型在线GAUC更高。
离线的话,A在实验流量上的GAUC是0.8125,B在基线流量上的GAUC是0.625。因为离线测试集由90%基线样本和10%实验样本组成,所以A在测试集上的GAUC是0.8125*0.9+0.8125*0.1=0.8125
,B在测试集上的GAUC是0.625*0.9+0.9375*0.1=0.65625
,既实验模型离线GAUC更低。
解决办法:可以构建无偏的离线测试集(不经过精排,直接由粗排给出排序结果),如果在无偏测试集上GAUC涨的话就上实验。如果无偏测试集不好构造,并且你对实验模型比较有信仰时,可以直接上实验看效果。
在线GAUC和业务效果指标不一致
场景一:在线GAUC涨,业务效果指标降
业务指标,比如电商类的GMV、广告类的ECPM、社区类的用户时长/点击率之类。打分分布变化往往会导致曝光集合的分布漂移,比如类目分布漂移、价格分布漂移、时效性分布漂移之类,往往会导致AUC和业务指标效果不一致。举个例子,社区场景下视频比图文GAUC高,但视频点击率低,视频比例提升会带动整体在线GAUC涨,但整体点击率下降。
场景二:在线GAUC降,业务效果指标涨
与上面相反。
解决办法:融合公式、重排逻辑等调参,将曝光分布尽可能调平。在调平的基础上,看哪些业务指标有收益,如果主业务目标没涨其他业务指标涨了,再通过调参将其他业务指标收益兑换到主业务目标上。比如,线上ctr涨了但用户时长没涨,那就把视频多出一点图文少出一点,达到ctr持平和用户时长上涨的目的。
总结
离线和在线GAUC都是中间指标,和最终的业务效果指标并不一定强一致,如果遇到不一致问题,可以从多维度进行下钻分析。