从系列中:应用机器学习
赛斯迪兰,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处总会有一个点,所有的东西都被归类为“异常”。
曲线下的面积是衡量分类器性能的指标。完美分类器的AUC为1。在此示例中,AUC为0.926。
在MATLAB中,您不需要像我在这里所做的那样手工完成所有这些。您可以从perfcurve函数获得ROC曲线和AUC。
现在我们已经了解了这一点,让我们来看一些ROC曲线的有趣案例:
·如果一条曲线一直向上并向左,那么您有一个分类器,对于某个阈值完美地标记了测试数据中的每个点,并且您的AUC是1。你要么有一个非常好的分类器,要么你可能想要担心你没有足够的数据,或者你的分类器是过拟合的。
·如果一条曲线是从左下到右上的直线,那么你就有了一个不比随机猜测更好的分类器(其AUC为0.5)。您可能想尝试一些其他类型的模型,或回到您的训练数据,看看是否可以设计一些更好的功能。
·如果曲线看起来有点锯齿状,这有时是由于不同类型分类器的行为造成的。例如,一棵决策树只有有限数量的决策节点,而这些节点中的每一个都有特定的概率。锯齿度来自于我们前面提到的阈值在某个节点处穿过概率。锯齿通常也来自测试数据中的缺口。
从这些示例中可以看出,ROC曲线可以是评估分类器性能的一个简单但细微差别的工具。
如果您想了解有关机器学习模型评估的更多信息,请查看下面描述中的链接。
你也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家/地区网站未针对您所在地的访问进行优化。