模型校准综合指南:内容、时间和方式

模型校准综合指南:内容、时间和方式

第 1 部分:了解校准机器学习模型以获得合理且可解释的概率作为输出

Photo by 阿迪·戈德斯坦 on 不飞溅

尽管今天可​​以找到大量关于机器学习和深度学习模型的博客,但我找不到很多关于模型校准及其重要性的资源。我发现更令人惊讶的是,模型校准对于某些用例可能是至关重要的,但它并没有得到足够的讨论。因此,我将编写一个由 4 部分组成的系列来深入研究校准模型。这是您在完成本系列文章后可以学习的内容。

学习成果

  • 什么是模型校准及其重要性
  • 何时和何时不校准模型
  • 如何评估模型是否经过校准(可靠性曲线)
  • 校准机器学习模型的不同技术
  • 低数据设置中的模型校准
  • 校准多类分类器
  • 在 PyTorch 中校准现代深度学习网络
  • 校准回归器

在今天的博客中,我们将关注前四个重点。

什么是模型校准?

让我们考虑一个二元分类任务和一个为此任务训练的模型。如果没有任何校准,模型的输出不能被解释为真实概率。例如,对于猫/狗分类器,如果模型输出示例为狗的预测值为 0.4,则该值不能解释为概率。 ** 为了用概率来解释这种模型的输出,我们需要校准模型。**

令人惊讶的是,大多数开箱即用的模型都没有经过校准,而且它们的预测值往往往往会过低或过分自信。这意味着,在许多不应该这样做的情况下,它们预测的值接近于 0 和 1。

解释未校准和校准模型的输出

为了更好地理解我们为什么需要模型校准,让我们看一下前面输出值为 0.4 的示例。 理想情况下,我们希望这个值表示的是,如果我们要拍摄 10 张这样的照片,并且模型将它们分类为狗,概率约为 0.4,那么实际上这 10 张照片中有 4 张实际上是狗的照片。 这正是我们应该如何解释来自 ** 校准** 模型。

但是,如果模型没有经过校准,那么我们不应该期望这个分数意味着 10 张图片中有 4 张实际上是狗图片。

何时不校准模型

我们校准模型的全部原因是,我们希望输出在解释为独立概率时有意义。但是对于某些情况,例如根据质量对新闻文章标题进行排名的模型,如果我们的策略是选择最佳标题,我们只需要知道哪个标题得分最高。在这种情况下,校准模型没有多大意义。

何时校准模型以及为什么它很重要

假设我们要对火警是否正确触发进行分类。 (我们今天将在代码中完成此任务。)从某种意义上说,这样的任务至关重要,因为我们希望彻底了解模型的预测并改进模型,以便对真实火灾敏感。假设我们对两个示例进行测试,将火灾的可能性分类为 0.3 和 0.9。 对于未校准的模型,这并不意味着第二个示例可能导致实际火灾的次数是第一个示例的三倍。

此外,在部署此模型并收到一些反馈后,我们现在考虑改进我们的烟雾探测器和传感器。使用我们的新模型运行一些模拟,我们看到前面的例子现在得分 0.35 和 0.7。

比如说,改进我们的系统需要 20 万美元。我们想知道我们是否应该为每个示例分别投入 0.05 和 0.2 的分数变化而投入这么多钱。 对于未校准的模型,比较这些数字没有任何意义,因此我们将无法正确估计一项投资是否会带来有形收益。但是,如果我们的模型经过校准,我们可以通过专家指导的基于概率的调查来解决这个难题。

通常,模型校准对于通过持续学习和反馈改进的生产模型至关重要。

评估模型校准

现在我们知道了为什么我们应该校准我们的模型(如果需要)让我们找出如何识别我们的模型是否经过校准。

那些直接想跳到代码的人可以在这里访问它。

数据集

今天,我们来看看电信客户流失预测数据集 卡格尔 .您可以阅读有关协变量和烟雾探测器类型的更多信息,查看 Kaggle 上数据集的描述页面。 我们将尝试在此数据上校准 LightGBM 模型,因为 XGBoost 通常是开箱即用的未经校准的。

数据集来自 IBM 官方,可免费下载 这里 .它在 Apache License 2.0 下获得许可,如发现 这里 .

可靠性曲线

可靠性曲线是一种很好的视觉方法,可以识别我们的模型是否经过校准。首先,我们创建从 0 到 1 的 bin。然后我们根据预测的输出划分数据并将它们放入这些 bin 中。例如,如果我们以 0.1 的间隔对数据进行分类,我们将在 0 和 1 之间有 10 个分类。假设我们在第一个分类中有 5 个数据点,即我们有 5 个点 (0.05,0.05,0.02,0.01,0.02) 其模型预测范围在 0 到 0.1 之间。现在在 X 轴上,我们绘制这些预测的平均值,即 0.03 在 Y 轴上,我们绘制经验概率,即数据点的真实值等于 1 的分数。假设在我们的 5 个点中,1 个点的真实值为 1。在这种情况下,我们的 y 值将是1/5 = 0.2。因此我们第一个点的坐标是[0.03,0.2]。 我们对所有的 bin 执行此操作,并将这些点连接起来形成一条线。然后我们将这条线与这条线进行比较

y = x 并评估校准。 当点高于这条线时,模型低估了真实概率,如果它们低于这条线,则模型高估了真实概率。

我们可以使用 Sklearn 构建这个图,它看起来像下面的图。

Sklearn’s calibration curve (Image by Author)

如您所见,该模型在 0.6 左右之前过度自信,然后在 0.8 左右预测不足

然而,Sklearn 情节有一些缺陷,因此 我更喜欢使用 Brian Lucena 博士的 ML-insights 中的图 包裹 .

这个包显示了数据点周围的置信区间,还显示了每个区间(每个 bin 中)有多少数据点,因此您可以相应地创建自定义 bin 区间。正如我们还将看到的那样,有时模型过于自信并且预测的值非常接近 0 或 1,在这种情况下,包有一个方便的 logit-scaling 功能来显示非常接近 0 或 1 的概率周围发生了什么。

这是与上面使用 Ml-insights 创建的图相同的图。

Ml-insight’s reliability curve (Image by Author)

如您所见,我们还可以看到每个 bin 中数据点的直方图分布以及置信区间。

定量评估模型校准

根据我在阅读该领域的一些文献时收集到的信息,捕获模型校准误差没有完美的方法。诸如预期校准误差之类的指标经常在文献中使用,但正如我所发现的(正如您在我的笔记本和代码中看到的那样),ECE 随您选择的 bin 数量而变化很大,因此并不总是万无一失的。我将在未来更高级的校准博客中更详细地讨论这个指标。 您可以在此博客中阅读有关 ECE 的更多信息 ** 这里** .我强烈建议你通过它。

基于 Lucena 博士的博客,我在这里使用的一个指标是传统的日志损失。这里的简单直觉是,对数损失(或交叉熵)会惩罚在做出错误预测或做出与其真实概率显着不同的预测时过于自信的模型。您可以在此阅读有关定量模型校准的更多信息 n 笔记本。

总而言之,我们希望校准模型的对数损失低于未校准模型的对数损失。

校准模型的方法

拆分数据

在我们进行任何校准之前,重要的是要了解我们无法校准我们的模型,然后在同一数据集上测试校准。因此,为了避免数据泄露,我们首先将数据分成三组——训练、验证和测试。

未校准的性能

首先,这就是我们未校准的 LightGBM 模型对数据的执行方式。

普氏定标

Platt Scaling 假设模型预测与真实概率之间存在逻辑关系。

剧透——这在很多情况下是不正确的。

我们只是使用逻辑回归器来拟合验证集的模型预测,并将该验证集的真实概率作为输出。

这是它的执行方式。

正如我们所见,我们的对数损失在这里肯定减少了。由于我们有许多模型预测接近 0 的数据点,我们可以在这里看到使用 Ml-insights 包(及其 logit 缩放功能)的好处 .

等渗回归

这种方法结合了贝叶斯分类器和决策树来校准模型,当我们有足够的数据来拟合时,它比 Platt 缩放效果更好。详细算法可以看 这里 .

我使用 ml-insights 包来实现等渗回归。

对于我们的数据,这似乎比 Platt 缩放更有效。 尽管在对不同数据拆分和随机种子的这些实验结果进行平均或使用交叉验证(我们将在以后的博客中看到)之后得出这样的结论会更明智。

样条校准

该算法由 Ml-insights 包的作者 (Brian Lucena) 提供,可在此找到 .

本质上,该算法使用平滑三次多项式(选择该多项式以最小化某些损失,如对技术细节感兴趣的人在论文中详述的那样),并且适合对验证集及其真实概率的模型预测。

Spline Calibration 在我们的数据上表现最好(至少对于这个拆分)。

这是他们所有人在一个情节中的表现

预期校准误差及其缺陷

许多当代文献提到 ECE 作为衡量模型校准程度的指标。

以下是 ECE 的正式计算方式。

  1. 像我们之前所做的那样选择 n 个箱数
  2. 对于每个 bin 计算属于该 bin 的数据点的模型预测的平均值,并通过该 bin 中的数据点数对其进行归一化。
  3. 对于每个 bin,还计算真阳性的比例。
  4. 现在为每个 bin 计算在步骤 3 和步骤 4 中计算的值之间的绝对差,并将该绝对差乘以该 bin 中的数据点数。
  5. 将步骤 4 中计算的所有 bin 的结果相加,并通过所有 bin 中的样本总数对该相加总和进行归一化。

计算 ECE 的代码可以在这里找到 博客 并已在我的实验中使用。

然而,在我的例子中,数据点在 bin 中的分布不是很均匀(因为大多数数据点属于第一个 bin),因此必须相应地为 ECE 选择 bin。我们可以看到 bin 的数量如何直接影响算法中的 ECE。

例如,只有 5 个 bin,未校准模型的校准误差似乎比所有其他方法都小。

然而,当我们增加 bin 的数量时,我们可以看到模型校准实际上对我们的案例有所帮助。

在下面的代码片段中,可以验证这种效果。请忽略 OE(现在的过度自信误差指标),因为它在文献中没有广泛使用。

对于 5 个垃圾箱,我们有

对于 50 个垃圾箱,我们有

对于 500 个垃圾箱,我们有

对于 5000 个垃圾箱,我们有

结论

在今天的博客中,我们看到了模型校准是什么,如何评估模型的校准以及这样做的一些指标,探索了 ml-insights 包以及校准模型的一些方法,最后探讨了 ECE 的谬误。

下一次,我们将研究低数据设置的稳健校准、校准深度学习模型并最终校准回归量。

看看我的 GitHub 对于其他一些项目。你可以联系我 ** 这里** ** .** 感谢您的时间!

如果你喜欢这里还有更多!

[

通过 LIME 解释 LSTM

了解如何通过 LIME 解释 Keras LSTM,并深入了解 LIME 文本库的内部工作......

向datascience.com

](/interpreting-an-lstm-through-lime-e294e6ed3a03)

[

在拥抱脸模型上添加自定义层

了解如何从 Hugging Face 模型主体中提取隐藏状态,在其之上修改/添加特定于任务的层,然后……

向datascience.com

](/adding-custom-layers-on-top-of-a-hugging-face-model-f1ccdfc257bd)

[

处理具有高基数的特征

我用来处理具有许多唯一值的分类特征的简单实用程序

向datascience.com

](/dealing-with-features-that-have-high-cardinality-1c9212d7ff1b)

致谢

我感谢 Brian Lucena 博士就与本博客相关的各种主题提供的帮助和建议。我还发现他关于模型校准的 YouTube 播放列表非常详细和有用,而且我的大部分实验都是基于他的视频。

参考

  1. https://www.youtube.com/playlist?list=PLeVfk5xTWHYBw22D52etymvcpxey4QFIk
  2. https://cseweb.ucsd.edu/~elkan/calibrated.pdf
  3. https://www.unofficialgoogledatascience.com/2021/04/why-model-calibration-matters-and-how.html
  4. https://towardsdatascience.com/classifier-calibration-7d0be1e05452
  5. https://medium.com/@wolframalphav1.0/evaluate-the-performance-of-a-model-in-high-risk-applications-using-expected-calibration-error-and-dbc392c68318
  6. https://arxiv.org/pdf/1809.07751.pdf

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/33212/00021309

posted @ 2022-09-13 09:02  哈哈哈来了啊啊啊  阅读(561)  评论(0编辑  收藏  举报