背景
- 在平时做项目的过程中,算法迭代是至关重要的,如果能准确找到算法的优化点和优化空间,那么可以使得最终的效果有很大的提升。
- 在实际的项目中,一个算法模块的上线可能会涉及算法,引擎,前段,测试等等一堆模块的修改,如果再加上链路的过长,跨部门跨团队的协同开发和联调不可避免,且非常耗时间,一旦上线发现效果不符合预期,会浪费大量的人力时间去排查和解决问题。
- 这种情况需要我们算法端的同学保证算法的有效性,能够保证如果效果不符合预期,排查范围可以锁定在工程链路上,而不是算法逻辑上;
- 尽量减少有个新算法新想法先扔到线上看看效果,视效果再继续迭代的想法,离线做好算法的评估,对最终算法效果又更强的把控,离线评估确保有正向价值的算法再退到线上;
- 算法模块尽量抽象出现,使得算法迭代的过程减小其他模型涉及的改动,最好是其他模块零改动。
如果做好有效的离线评估呢?
离线评估重要的是选择一个靠谱的离线评估指标,选对并且用对了评估指标,可以让算法的迭代有明确的优化方向,离线的提升能够预期带来实际线上效果的提升。
GAUC
AUC指标相信对机器学习算法熟悉的人都比较了解,是非常常用的模型评价指标,在很多二分类的问题中是最重要的算法模型评估依据。以广告场景的ctr预估问题为例,ctr预估本质上是对一个流量是否会发生点击行为的一个预测,点击or不点击就是模型想给出的答案,也是一个二分类问题,一般地,算法会给一个流量打上一份score分,如果score分超过某个threshold,则判断为点击,否则不会点击,AUC指标本质上不会关心score分数的绝对值大小,只会关心score的相对大小和排序情况。AUC的计算需要记得如下公式:
AUC=