zoukankan      html  css  js  c++  java
  • 线上线下效果不一致

    1. 发生在 KAGGLE 比赛中的“地震”现象

    主要原因:训练集和测试集数据分布不一致

    检测:在训练集合和测试集合上训练一个二分类,并在测试集合上进行 auc 检测,如果 auc = 0.5,说明训练集合和测试集合没有显著差异。当 > 0.7 时,说明有较大差异。

    应用1:二分类预测测试集上所有样本,将打分最高的 TOPK 选做测试集。

    应用2:不挑选样本,只加权,将二分类的打分算作样本的权重,与测试集越相似,则权重越高。

    2. offline 评估和线上评估效果不一致

    原因a:bug

    特征是否齐,特征穿越(我们在线log的,应该不可能),过拟合的测试集合(多扩大几天)

    原因b:离线指标不可信

      auc?

      gauc?

      auc 是一个比较全局的评价指标,如果存在大量的负样本,则拉低了 fpr,进而提升了 auc。

      之前的测试数据发现以下的问题

      - test 是 daily feature join daily events。如果 events 跨天了,则会出现假负例。

      - 用户没点击不代表用户不喜欢。遇到过, ai push 了相似的文章,用户点击了最新的。是天然的 position bias。

    原因c:动态环境

      线上 rerank 的规则可能改变真实的排序结果。

    原因d:样本分布不一致

      离线预测的都是实际展示给用户的,在线的时候预测的是所有召回的集合。离线训练看不到其他召回结果。(可以采样部分召回结果,但是 label? )可能导致线上拉胯。

      对于新模型,一开始都是在拟合老模型产生的样本。可能经过一段时间的迭代,慢慢影响样本的分布,逐渐收敛。

      - solution1:尽量使用无偏的样本(探索、随机)或者引入召回的样本作为负例。

      - solution2:线上新老模型做融合,逐渐降低老模型的权重。

    原因e: 可能是业务场景的问题。

      - 比如优化了 AI PUSH,那么 editor push 会不会降?如果 editor_push 降了比增的少,那是不是整体就是降的。

    3. 可优化的思路

    有没有办法用上全部的正例

    A. 因为没有走 AI push 而丢失的正例(比如 ED push, CA  push)

    无论是 calibrate,还是线上 join 特征。正例如果反馈时间太长,是不能 join 上特征的,就会导致这个正例被丢掉了。

    时间窗口的方法,势必会丢掉窗口外的正例。有没有办法可以不丢失呢?

    是不是可以用用户最近一次的 running_feature 做近似?因为只要用户没有点击,v1 就不会跟新的。但如果前一次是点击的话,画像可能会轻微变化。

    B. 因为不在窗口内而丢失的正例

    running feature 不能无限存储,这部分可能就得丢掉?

  • 相关阅读:
    (转)Python格式化字符 %s %d %f
    (转) Linux Shell经典实例解析
    (转)用shell脚本实现杨辉三角的4个实例!
    (转)[Shell]tr命令详解
    (转)linux shell单引号、双引号及无引号区别
    (转)Linux基础------Shell数值计算的几种方法
    (转)Shell中获取字符串长度的七种方法
    (转)source、sh、bash、./执行脚本的区别
    session和cookie的联系
    javascript中的cookie
  • 原文地址:https://www.cnblogs.com/toonice/p/14701446.html
Copyright © 2011-2022 走看看