你的模型隐藏了什么? 一个评估 ML 模型的教程(Evidently)(下)

简介: 想象一下,你训练了一个机器学习模型。 也许,有几个候选模型可供选择。您在测试集上运行它们并获得了一些质量估计。 模型没有过拟合。 特征是有意义的。 总体而言,鉴于手头的数据有限,它们的表现尽他们所能。现在,是时候决定它们中的任何一个是否足以用于生产用途。 除了标准性能检查之外,如何评估和比较您的模型?在本教程中,我们将通过一个示例详细介绍如何评估您的模型。

例如,我们只能对第二个模型的前 5% 预测采取行动。 在测试集上,它对应的概率阈值为 66%。 所有具有较高预测概率的员工都被认为有可能离开。

‍在这种情况下,只剩下 18 个预测。 但其中有 14 个是正确的! 召回率下降到只有 23.7%,但准确率现在是 77.8%。 我们可能更喜欢它而不是原来的 69% 精确率,以最大限度地减少误报。

为了简化概念,我们可以在类分离图上想象一条线。

网络异常,图片无法展示
|


在实践中,我们可以通过以下两种方式之一进行限制:

  • 通过仅对 top-X 预测采取行动
  • 通过将概率大于 X 的所有预测分配给正类。

第一个选项可用于批处理模型。 如果我们一次为所有员工生成预测,我们可以对它们进行排序并选取前 5%。

如果我们根据要求进行个别预测,那么选择自定义概率阈值是有意义的。

网络异常,图片无法展示
|


这两种方法中的任何一种都可以根据用例起作用。

我们也可能决定以不同的方式可视化标签。 例如,将每位员工的流失风险标记为高、中或低。 它需要基于预测概率的多个阈值。

在这种情况下,我们将额外注意模型校准的质量,如类分离图所示。

总而言之,我们会考虑精确率召回率权衡来评估我们的模型并选择应用场景。 我们不是为每个人显示预测,而是选择一个阈值。 它帮助我们只关注流失风险最高的员工。


示例 3:有选择地应用模型

我们也可以采取第三种方法。

当查看两个模型的不同图表时,出现了一个明显的问题。 图表上的圆点背后的具体员工是谁? 这两种模型在预测来自不同角色、部门、经验水平的离职人员方面有何不同?

这种分析可能会帮助我们决定何时应用模型,何时不应用。 如果有明显的模型失败的部分,我们可以排除它们。 或者,反过来,我们只能应用模型表现良好的地方。

在界面中,我们可以显示“信息不足”之类的内容。 这可能比一直犯错要好!

网络异常,图片无法展示
|


表现不佳的段

为了更深入地了解表现不佳的段,让我们分析分类质量表。 对于每个特征,它将预测概率与特征值一起映射。

通过这种方式,我们可以看到模型在哪里出错,以及它们是否依赖于单个特征的值。

让我们举个例子。

这是一个职位级别特征,它是角色资历的特定属性。

网络异常,图片无法展示
|


如果我们对 Level 1 的员工最感兴趣,第一个模型可能是一个不错的选择! 它以高概率做出了一些自信的预测。 例如,在 0.6 阈值处,该组中只有一个误报。

‍如果我们想预测 Level 3 的辞职情况,第二个模型看起来要好得多。

‍如果我们希望我们的模型适用于所有 Level,我们可能会再次选择第二个模型。 平均而言,它在Level 1、2 和 3 中具有可接受的性能。

‍但同样有趣的是,这两个模型在Level 4 和 Level 5上的表现如何。对于这些组中的员工所做的所有预测,概率明显低于 0.5。 两种模型总是分配一个“negative”标签。

如果我们查看真实标签的分布,我们可以看到在这些工作级别中,辞职的绝对数量非常低。 很可能在训练中也是如此,并且该模型没有为该段(segment)选择任何有用的模式。

网络异常,图片无法展示
|


如果我们要在生产中部署模型,我们可以构建一个简单的业务规则并将这些segments从应用程序中排除。

网络异常,图片无法展示
|


我们还可以使用此分析的结果将我们的模型放在“绩效改进计划”中。 也许,我们可以添加更多数据来帮助模型?

例如,我们可能有最初从训练中排除的“旧”数据。 我们可以选择性地为表现不佳的部分增加我们的训练数据集。 在这种情况下,我们将添加更多关于Level 4 和 Level 5 员工辞职的旧数据。

总而言之,我们可以识别模型失败的特定部分(segments)。 我们仍然为尽可能多的员工展示预测。 但知道该模型远非完美,我们仅将其应用于全体员工中表现最佳的部分。


还能了解模型的什么行为?

同样的表还可以帮助我们更详细地了解模型的行为。 我们可以探索错误、异常值,并了解模型学到了什么。

例如,我们已经看到,第一个模型只能自信地预测少数辞职。 第二个模型从我们的数据中“捕捉”了更多有用的信号。 它从何而来?

如果我们查看我们的特征,我们可以得到一个提示。

例如,第一个模型成功地预测了那些对公司来说相对较新的人的辞职。 第二种模型可以检测到具有长达 10 年经验的潜在离职者。 我们可以从这个图表中看出:

网络异常,图片无法展示
|


我们可以在股票期权级别看到类似的情况。

第一个模型只能成功地预测那些 Level 0 的人。即使我们有相当多的辞职者,至少在 Level 1 也是如此!

第二个模型捕获了更多离职的更高级别(Level)的人。

网络异常,图片无法展示
|


但是,如果我们看一下加薪(即最近的加薪),我们会注意到没有明确的部分,其中任何一个模型的表现更好或更差。

除了第一个模型的一般特征之外,没有特定的“skew”可以做出更少的自信预测。

网络异常,图片无法展示
|


类似的分析可以帮助在模型之间进行选择或找到改进它们的方法。

就像上面的 JobLevel 示例一样,我们可能有办法扩充我们的数据集。 我们可能会添加其他时期的数据或包含更多特征。 在段(segments)不平衡的情况下,我们可以尝试给予特定示例更多的权重。 作为最后的手段,我们可以添加业务规则。

我们有赢家!

回到我们的例子:第二个模型是大多数场景的赢家。

网络异常,图片无法展示
|


但谁会只看 ROC AUC 就发誓呢?

我们必须超越单一指标来深入评估模型。

它适用于许多其他用例。性能比准确率更重要。 并且并不总是可以为每种错误类型分配直接的“成本”以对其进行优化。 将模型视为产品,分析必须更加细致入微。

不要忽视用例场景并将我们的标准与它联系起来,这一点至关重要。 可视化可能有助于与不以 ROC AUC 术语思考的业务利益相关者进行交流。

附属细则

网络异常,图片无法展示
|


本教程不是关于辞职预测,而是更多关于模型分析!

如果您希望解决类似的用例,让我们指出这个玩具数据集中至少有一些限制。

我们缺少一个关键数据点:辞职类型。人们可以自愿离开、被解雇、退休、搬到全国各地,等等。这些都是不同的事件,将它们组合在一起可能会产生模棱两可的标签。专注于“可预测”类型的辞职或解决多类问题是有意义的。

关于所执行的工作没有足够的上下文。其他一些数据可能更好地表明流失:绩效评估、特定项目、晋升计划等。这个用例需要与领域专家一起仔细构建训练数据集。

没有关于时间和辞职日期的数据。我们无法解释事件的顺序,也无法与公司历史上的特定时期相关联。

最后但并非最不重要的一点是,像这样的用例可能非常敏感。

您可以使用类似的模型来预测一线人员的流动情况。目标是预测招聘部门的工作量和相关的招聘需求。不正确的预测可能会导致一些财务风险,但这些风险很容易被考虑在内。

但如果该模型用于支持有关个别员工的决策,其影响可能会更加严重。例如,考虑分配培训机会时的偏见。我们应该评估用例的伦理并审核我们的数据和模型的偏见和公平性。

相关文章
|
20小时前
|
机器学习/深度学习
大模型开发:解释正则化及其在机器学习中的作用。
正则化是防止机器学习过拟合的技术,通过限制模型参数和控制复杂度避免过拟合。它包含L1和L2正则化,前者产生稀疏解,后者适度缩小参数。选择合适的正则化方法和强度对模型性能关键,常用交叉验证评估。
|
20小时前
|
IDE 开发工具
垃圾分类模型训练部署教程,基于MaixHub和MaixPy-k210(3)
在开发板上运行模型 1、烧录模型文件到板子 使用kflash_gui工具,可以完成这个任务。
198 0
|
20小时前
|
IDE 数据处理 开发工具
垃圾分类模型训练部署教程,基于MaixHub和MaixPy-k210(1)
我的准备 Maix duino开发板一块(含摄像头配件) Type-c数据集一根
129 0
|
20小时前
|
机器学习/深度学习 Python
垃圾分类模型训练部署教程,基于MaixHub和MaixPy-k210(2)
至此,我们就已经成功上传了其中一个类别的图片啦!按照上面的方式,我们可以继续上传其余每个类别的图片。 上传完所有类别的图片后,来到总览,可以大致浏览我们刚刚上传的图片。 接下来,就要用这些图片来训练用于垃圾分类的模型了!
153 0
|
19小时前
|
资源调度 算法 数据挖掘
R语言有限混合模型(FMM,finite mixture model)EM算法聚类分析间歇泉喷发时间
R语言有限混合模型(FMM,finite mixture model)EM算法聚类分析间歇泉喷发时间
|
20小时前
|
存储 机器学习/深度学习 人工智能
基于Megatron-Core的稀疏大模型训练工具:阿里云MoE大模型最佳实践
随着大模型技术的不断发展,模型结构和参数量级快速演化。大模型技术的应用层出不穷。大模型展现惊人效果,但训练和推理成本高,一直是巨大挑战。模型稀疏化能降低计算和存储消耗。近期以Mixtral为代表的MoE(多专家混合)大模型证明了稀疏MoE技术能大幅降低计算量、提升推理速度,模型效果甚至超过同规模稠密模型。阿里云PAI和NVIDIA团队深入合作,基于Megatron-Core MoE框架,解决了MoE大模型训练落地时会遇到的可拓展性、易用性、功能性以及收敛精度等核心问题,在下游任务上取得了很好的模型效果。
|
10月前
|
机器学习/深度学习 API 算法框架/工具
Keras 高级教程:模型微调和自定义训练循环
我们在前两篇文章中介绍了如何使用 Keras 构建和训练深度学习模型的基础和中级知识。在本篇文章中,我们将探讨一些更高级的主题,包括模型微调和自定义训练循环。
|
10月前
|
机器学习/深度学习 算法 搜索推荐
Stacking:解决机器学习进行多模型组合的实用工具
在机器学习领域,算法的选择和参数的调整一直是让人头痛的难题。虽然有很多算法可以使用,但没有一种算法是万能的。随着技术的不断发展,出现了一些新的技术可以在算法选择和调整参数方面提供一些帮助。其中最流行的技术之一是Stacking。 Stacking是一种用于增强机器学习模型性能的技术。该技术通过结合不同算法的预测结果来生成最终的预测结果。这种方法能够帮助解决许多机器学习问题,特别是当单一算法不足以解决问题时。
|
10月前
|
机器学习/深度学习 自然语言处理 算法
使用PyTorch构建神经网络(详细步骤讲解+注释版) 03 模型评价与准确率提升
使用PyTorch构建神经网络(详细步骤讲解+注释版) 02-数据读取与训练 本文的使用的部分类方法为前述文章定义所得,如果希望运行完整代码建议同时查看上一篇文章或文末留言发你完整代码。
使用PyTorch构建神经网络(详细步骤讲解+注释版) 03 模型评价与准确率提升
|
10月前
|
机器学习/深度学习 PyTorch 测试技术
使用PyTorch构建神经网络(详细步骤讲解+注释版) 01-建立分类器类
神经网络中,一个非常经典的案例就是手写数据的识别,本文我们以手写数据识别为例进行讲解。用到的数据是MNIST数据集。MNIST数据集是一个常用的用于计算机视觉的测试数据集,包含了70,000张手写数字的图片,用于训练和测试模型识别手写数字的能力。MNIST数据集中的图片大小都是28x28像素,图片中的数字是黑白的,每张图片都有对应的标签,表示图片中的数字是什么。MNIST数据集是计算机视觉领域的“Hello World”级别的数据集,被广泛用于计算机视觉模型的训练和测试。