我认为需要考虑的第一个问题是:您是否期望您正在处理的数据会随着时间而变化(即您是否期望存在概念漂移)?这可能是任何类型的变化。简单地改变某些输入的频率,改变正面/负面的频率,甚至改变输入和真实的正面/负面标签之间的关系。
如果您不希望出现概念漂移,我几乎会考虑建议您可能没有那么大的问题。对您在线收到的数据完全不做任何事情可能是值得的,而只是坚持您最初从离线数据中学到的东西。或者,您可以尝试使用获得的那些额外的预测阳性样本进行微调。您只需要注意不要在此基础上过多地更改您的模型,因为您知道您在这里不再收到所有数据的代表性样本,因此如果您过分关注,您可能会偏向您的模型仅此在线数据相对于离线数据。
如果您确实希望存在概念漂移,我想这个问题会变得更加有趣,而且在大多数与问题描述相匹配的情况下,您似乎也确实在处理这个问题。在这种情况下,您确实希望充分利用您上网的新数据,因为它可以让您适应正在处理的数据的变化。
因此,一种“解决方案”可能是……忽略您仅从所有数据的有偏差样本(仅从预测的阳性样本)在线学习的问题,并且无论如何都要学习。这实际上可能不会表现得太差。除非您的模型已经非常出色,否则您可能仍然会得到误报,因此仍然可以从其中一些模型中学习——您并不是只从正例中学习。尽管如此,误报并不能代表所有的负面,所以你仍然有偏见。
我能想到的唯一更好的解决方案是放宽这个假设:
部署后,人类仅检查算法预测为阳性的项目并检查其正确性。
您仍然可以让人类专注于预测的积极因素,但有时也可能让他们检查预测的消极因素。不经常,就几次。您可以将其视为像在强化学习环境中一样进行探索。您可以随机进行(以一些小概率随机选择预测的负数),但您也可以对此更聪明,并明确针对您的模型“不确定”的实例或与您之前见过的数据不同的实例进行探索(专门针对概念漂移)。
我在这里有一篇与此非常相似的论文:Adapting to Concept Drift in Credit Card Transaction Data Streams Using Contextual Bandits and Decision Trees。这里假设我们正在处理(可能是欺诈性的)交易,我们可以从中挑选并手动检查一个非常小的在线样本。本文唯一真正的区别是,我们假设不同的交易也有不同的货币“奖励”,以根据交易金额被正确捕获为正数。因此,即使我们预测欺诈的可能性很低,一笔金额非常高的交易也可能值得检查,而金额非常低的交易可能会被忽略,即使它具有较高的欺诈预测概率。
监控什么有意义的指标以确保模型的性能不会降低?*(鉴于此处指定的约束,F1 分数是未知的)。
如果可能的话,为此设置一个带标签的评估集可能会很有用......但如果概念漂移预计是您的问题设置中的一个主要问题,它也可能不具有代表性(因为我认为您在线处理的概念漂移会不会反映在较旧的、有标签的评估集中)。
只需跟踪您可以在线测量的事物,例如精度,以及它如何随时间变化,就已经足够有用了。通过一些额外的假设,您可以获得其他指标的粗略估计。例如,如果您假设该比率TP+FNFP+TN在ground-truth-positives 和ground-truth-negatives 之间保持不变(与您的离线标记数据中的情况相同),您还可以尝试推断您错过了多少正面。如果你的精度随着时间的推移而下降(你的真阳性越来越低),你知道——假设分数保持不变——你在数据集中其他地方的假阴性必须以大约相同的绝对数增长。