从系列:应用机器学习
赛斯迪兰,MathWorks
使用ROC曲线评估分类模型。ROC曲线绘制的真阳性率与假阳性 不同值的阈值
通过广泛说明什么ROC曲线,以及为什么你会使用他们几个例子这部影片会。它也概述了使用ROC曲线时,你可能会遇到有趣的场景。
ROC曲线是评价分类模型的重要工具。它们也有点抽象,所以让我们从回顾一些评估模型的简单方法开始。
让我们使用具有与心脏发出的声音做一个例子。鉴于从心脏的音频记录71点不同的特点,我们试图如果心脏音正常或异常进行分类。
一个最简单的指标来理解的是模型的精度 - 或者,换句话说,这是多么经常正确的。因为它是一个单一的数量,使比较容易的准确性是非常有用的。现在我在看右边的分类有86.3%的准确度。
准确性不能告诉你的是这个模型是对还是错。为此,有一个混淆矩阵,它显示了诸如真实的阳性率之类的东西。在这种情况下,它是74%,这意味着分类器正确预测异常心音的概率是74%。我们还有9%的假阳性率。这是当心音正常时,分类器预测异常的速率。
混淆矩阵给出了单个模型的结果。但大多数机器学习模型并不只是对事物进行分类,它们实际上是在计算概率。该模型的混淆矩阵显示了将任何概率为>=0.5为异常,而概率<0.5为正常的分类结果。但这个0。5不一定是固定的,事实上我们可以在0到1的概率范围内任意取值。
这就是ROC曲线的作用。ROC曲线显示了不同阈值下的真阳性率与假阳性率。
让我们更详细地看看这个。
这里是我的模型,我会在我的测试数据运行它得到一个异常的心脏声音的可能性。现在,让我们通过以0.5阈值处理这些概率开始。如果我这样做,我得到74%的真阳性率和9%的假阳性率。
但是,如果我们想成为非常保守的,所以即使心脏的声音是不正常的概率只有10%,我们将其归为异常。
如果我们这样做,我们得到了这一点。
如果我们想成为真正的肯定,并以90%的概率为只有异常声音分类?然后,我们会得到这点,它具有低得多的假阳性率,而且较低的真阳性率。
现在,如果我们要创建一批值的这个阈值介于0和1,说的1000次试验均匀分布的,我们会得到很多这样的ROC点,而这也正是我们从ROC曲线。ROC曲线显示了我们在真阳性率和改变该阈值的值,假阳性率的权衡。
总是会有的ROC曲线上的点在0 0逗号在我们的情况下,一切都被归类为“正常”。而且总是会有一个点,在1个逗号1,这里的一切被归类为“不正常”。
曲线下面积是我们的分类有多好是一个度量。一个完美的分类将有1的AUC在这个例子中,AUC为0.926。
在MATLAB中,你不需要手动像我在这里所做的做到了这一切。你可以得到ROC曲线,并从perfcurve功能AUC。
现在我们已经下来,让我们来看看一些有趣的情况下,对于ROC曲线:
·如果一条曲线一直向左向上,你就有了一个分类器,对于某个阈值,它完美地标记了测试数据中的每个点,你的AUC是1。你要么有一个非常好的分类器,要么你可能会担心你没有足够的数据或者你的分类器过度适合。
·如果一条曲线是从左下到右上的一条直线,那么你的分类器只能做一个随机的猜测(它的AUC是0.5)。您可能想尝试一些其他类型的模型,或者回到您的训练数据,看看是否可以设计一些更好的特性。
·如果曲线看起来有点锯齿,这有时是由于不同类型的分类行为。例如,决策树仅具有判决节点的有限数,并且每个这些节点的具有特定的概率。参差来自我们前面谈到的阈值跨越的节点之一的概率。锯齿也通常来自于测试数据的差距。
正如你可以从这些例子看,ROC曲线可以是简单的,但细致入微的评估分类器性能的工具。
如果您想了解更多关于机器学习模型评估,看看在下面的描述中的链接。