2020-11-10 关于算法在实际落地场景中,可能面临的问题。
1、模型上线后不符合预期,如何排查
-
检查线上服务:线上模型是否正常更新;是否有把最新的模型更新到线上;看线上流量请求是否正常;看打分监控是否正常
-
检查模型:看线上日志打分是否符合预期。通过ctr/pctr先后验一致性,判断模型性能的问题(多分类的ctr/pctr不准确)
-
检查训练:通过看acc和auc等指标,判断训练过程问题是否有问题
-
检查特征:特征覆盖度、特征取值、线上线下一致性等是否有问题
-
检查样本:正负样本比例、样本脏数据等是否有问题
总结:所有的问题,都可以通过数据分析定位问题。从数据中可以看出一切。
2、不同的场景,对于ctr先后验的要求也不同
-
push场景:只关注序,不关注真实的ctr(因为没有出价)
-
cpd场景:ctr准了之后才能乘以价格,否则会错乱(因为有出价)
举例:
id1 | id2 | 序 | |
---|---|---|---|
ctr | 0.3 | 0.1 | id1, id2 |
pctr | 0.4 | 0.3 | id1, id2 |
bid | 2 | 5 | |
ctr x bid | 0.6 | 0.5 | id1, id2 |
pctr x bid | 0.8 | 1.5 | id2, id1 |
可见,如果pctr=ctr,则点击率乘以出价后的序应该为id1, id2。但是由于先后验不一致(即预估不准),造成了实际的序变为id2, id1,即错乱了。
3、模型参数规模 vs 训练样本
经验:参数量不能超过训练数据的50%。一般而言,参数量 : 训练数据的量 = 1 : 10
正常加特征,最多是不增加auc,但是不会减auc(顶对没用,但不会负向),这就是持续加特征的动力(在性能瓶颈之前)。特征上限主要是考虑性能,比如模型训练耗时,线上打分耗时等等。当特征规模太大,开始影响性能时,就要考虑删减掉无效和冗余的特征。
参数量,直接看
4、接手一个新业务场景的算法需求,应该从哪些方面掌握功能和重点
- 首先,深入了解业务(和产品谈,和业务方谈)
- 其次,深入理解数据(校验数据,理解数据)
- 最后,掌握模型指标