随着机器学习基础设施的成熟,对模型监控的需求激增。不幸的是,这种不断增长的需求并没有形成一个万无一失的剧本,向团队解释如何来衡量模型的性能。
生产模型的性能分析可能很复杂,每种情况都有其自身的挑战。不幸的是,并不是每个模型应用场景都有一个明显的路径来衡量其性能,就像学校里教的玩具问题一样。
在这篇文章中,我们将讨论与ground truth可用性相关的一些挑战,并讨论可用于测量每个场景中模型的性能指标。
理想的 ML 部署场景(通常是他们在课堂上教你的)是,一旦将模型部署到生产环境中,就可以快速获得可操作的快速性能信息。
这个理想的视图如下所示:
在这个例子中,你可以看到每个预测的ground truth,并且预测和ground truth之间存在直接联系,允许你直接分析模型在生产中的性能。
有许多行业有幸面对这种理想的情况。数字广告就是这样,模型试图预测消费者最可能参与的广告。几乎在作出预测后,ground truth,无论他们是否点击,都已确定。
对于这一理想情况的另一个例子,我们可以看看预测粮食供应量的估计。一旦披萨到达饥饿顾客的家,你就知道你的模型做得有多好。
一旦您将这个潜在的ground truth链接回您的预测事件,就可以轻松计算和跟踪模型性能指标。要使用的最佳模型度量主要取决于模型类型及其预测数据的分布。以下是一些常见的模型性能指标:
- 准确率:总体准确度是一种常见的统计数据,在类平衡时很有用。
- 召回率:对不平衡类很有用。在总体正样本(TP+FN)中,我正确的比例是多少。
- 精确率:适用于不平衡类。阳性鉴定(TP+FP)的正确率是多少。
- F1:适用于不平衡类,召回率和精确率之间的权衡。
- MAE或MAPE:回归或数值度量性能分析。
一旦确定了模型指标,就可以每天或每周跟踪该指标,以确保从训练或最初升级到生产时,性能没有大幅下降。
然而,正如你现在肯定预测的那样,这种理想的情况是例外,而不是规则。在许多现实环境中,对ground truth的访问可能会有很大的不同,并且您可以使用的工具也会有很大不同,以监视您的模型。
虽然许多应用程序享受模型预测的实时ground truth,但许多模型应用程序场景必须等待一段时间才能知道其模型在生产中的行为。
假设您正在尝试预测哪些客户值得信贷,哪些客户可能会拖欠贷款。在还清贷款或客户违约之前,您可能不会知道自己是否做出了正确的决定。这使得确保模型的行为符合预期变得很棘手。
接收ground truth的这种延迟也不能有固定的时间尺度。例如,尝试对哪些信用卡交易是欺诈性的进行分类。除非你收到一份客户报告,声称他们的信用卡被盗,否则你可能不会知道交易是否真的是欺诈行为。这可能会在交易结清后几天、几周甚至几个月发生。
在这些情况下,以及其他一些情况下,模型所有者有一个重要的时间范围来接收模型预测的ground truth结果。
在上图中,虽然我们确实看到模型的ground truth最终得到了确定,但模型上个月的预测还没有得到相应的结果。
当ground truth延迟足够小时,此场景与ground truth实况没有太大区别,因为模型所有者仍有合理的节奏来测量性能指标并相应地更新模型,就像在ground truth实情场景中一样。
然而,在接收ground truth存在重大延迟的系统中,团队可能需要转向代理度量。代理指标是与您试图近似的ground truth相关的替代信号。
例如,假设您使用的模型是消费者最有可能拖欠信用卡债务的模型。在这种情况下,成功的潜在代理指标可能是您贷款逾期付款的消费者的百分比。
因此,虽然您还无法了解ground truth,但您可以开始了解在此期间可以计算的代理指标如何随着时间的推移而变化,以衡量模型的性能。
代理度量在面对延迟的ground truth时是一个强大的工具,因为它们提供了模型执行情况的最新指标。
对 Ground Truth 的因果影响(有偏见的 Ground Truth)
需要注意的一件重要事情是,并非所有的 Ground Truth 都是平等的。有些情况下,团队会收到实时 Ground Truth ;然而,该模型的决策实质上影响了结果。
在这个例子中,我们试图预测谁的信用足以获得贷款。这变得很棘手,因为当你拒绝某人的信用时,你就再也没有任何关于他们是否可以偿还你的信息了。
换言之,只有你决定贷款给的人才会导致你可以用来训练未来模型的结果。因此,我们永远不知道模型预测的违约者是否真的可以全额偿还贷款。
这可能会让你举手投足,并接受你的 Ground Truth 只会有偏见;但是,您确实可以使用一些工具。
您可以做的事情是创建一个不遵循模型预测的保留集,并比较该保留集与使用模型预测的集之间的预测性能差异。
您可以使用这两组接受不同处理来验证您的模型预测,并在我们的示例中,确保您不会错过您的模型所缺少的一组潜在的值得信赖的人。
作为处理数据的人,您很可能会经常看到这张图片弹出。 没有参考数据,任何关于数据偏差的讨论都是不完整的。
故事是这样的,二战中的工程师们绘制了一幅热力图,图中的弹孔穿透了从战场上返回的飞机,目的是确定在哪里加固装甲。一天,一位名叫Ahbrahm Wald的统计学家指出,热力图是由完成任务返回的飞机生成的。因此,事实上,最好的装甲放置地点可能是存在空旷空间的地方,例如发动机,因为在这些地方被击中的飞机从未回家。
TLDR:始终注意您的 Ground Truth 数据中的偏差。
没有 Ground Truth
这给建模团队带来了更糟糕的情况:没有真实的反馈来链接模型性能。
在上面的例子中,我们的验证和训练集中有 Ground Truth,可以链接回我们模型的预测;但是在生产中,我们现在几乎没有关于我们的模型表现如何的反馈。
同样,在这种情况下,Ground Truth 的代理指标可能非常有用。在没有 Ground Truth 的情况下,如果您能找到与 Ground Truth 相关的其他内容,您仍然可以了解模型在一段时间内的表现。
除了代理 Ground Truth 指标之外,即使难以收集 Ground Truth,团队也必须找到一种方法来收集Ground Truth 数据样本。
获取这些Ground Truth数据的一种方法是聘请人工标注者来提供有关其模型性能的反馈。这种方法可能既昂贵又耗时;然而,拥有一组高质量的Ground Truth数据的回报是巨大的。
在 Ground Truth 可用或已通过手动标注收集的时期内,可以使用性能或滞后性能指标。尽管这些滞后的性能指标在实时应用程序中表示模型性能突然下降方面并不那么好,但它们仍然提供有意义的反馈,以确保模型性能随着时间的推移朝着正确的方向发展。
漂移是性能的代理
虽然这些滞后的性能指标不能立即表明模型性能的变化,但测量预测输出分布的变化可能可以。即使不存在Ground Truth,输出预测中发生的漂移也可用于提醒团队模型行为异常。
您可以用来量化预测漂移的一些指标是分布距离指标,例如:Kullback-Leibler Divergence、Population Stability Index (PSI)、Jensen-Shannon Divergence 等。
模型指标
尽管数据科学家喜欢处理聚合优化统计数据,但现实情况是模型会以不同的方式影响不同的人、客户群和业务决策。
具有相同准确度的两个候选模型可能会对特定人群产生显着不同的影响,而这些差异对您的业务可能非常重要。
团队通常将他们的数据划分为“切片”或“群组”。 这些群组可以随着时间的推移而被发现,或者它们是动态构建的,用于调试模型错误过多的地方。
在上面的示例中,我们看到基于高净值、低 FICO 分数和最近的默认值等特征对数据进行分组提供了有关模型如何针对这些特定群组执行的重要信息。
高于 90% 的整体准确度实际上隐藏了一个事实,即该模型在预测最近违约的人的信用价值方面表现非常糟糕。
跨群组测量模型性能类似于总体测量模型性能。应测量对业务重要的每个群组的性能,并在性能下降到训练或初始模型启动定义的阈值以下时发出警报。
衡量业务成果
既然我们已经讨论了通过为您的应用场景选择正确的模型指标来衡量模型性能,那么让我们简单地谈谈衡量业务指标。
业务指标与模型指标齐头并进,如果定义得当,它们应该被链接起来。归根结底,您并没有向您的客户发送 F1 值,因此,与您的模型如何影响每个客户体验您的产品的方式保持联系非常重要。
业务指标往往不太适合传统优化,但它们提供了对业务目标的关键见解。由于模型不容易优化这些指标,因此将使用并行指标设置优化问题。
再次转向信用度示例,虽然您的模型可能正在针对诸如准确性或 F1 等传统模型指标进行优化,但您可能希望监控的业务指标是您拒绝信用的人数百分比。
归根结底,您团队中的产品经理可能不关心 MAPE,但他们会关心您的用户如何体验您的产品。衡量模型评估指标通常不会捕捉到您可能拥有多少愤怒的客户。
正如您可能已经了解到的那样,识别和衡量业务指标是一个极其重要的过程,可以确保您的努力花在改进产品上,我将在以后的文章中对此进行更深入的探讨!
总结
总之,测量模型性能并不是一刀切,您的业务应用程序可能需要我们讨论的部分或全部这些测量技术。
虽然衡量模型性能的途径并不总是一目了然,但明确的是,正确衡量模型的性能对于确保向客户提供一致且有效的产品至关重要。