应用机器学习,第二部分:ROC曲线
从系列中:应用机器学习
使用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)在这里,一切都被归类为“异常”。
曲线下的面积是衡量我们的分类器有多好。一个完美的分类器的AUC应该是1。在本例中,AUC为0.926。
在MATLAB中,你不需要像我在这里做的那样手工做这些。你可以从perfcurve函数中得到ROC曲线和AUC。
现在我们有了这些,让我们看看ROC曲线的一些有趣的例子:
·如果一条曲线一直向上和向左,你有一个分类器,对于某个阈值完美地标记测试数据中的每个点,并且你的AUC为1。你要么有一个非常好的分类器,要么你可能会担心你没有足够的数据,或者你的分类器过拟合。
·如果一条曲线是一条从左下到右上的直线,那么你有一个分类器,它的效果不比随机猜测好(它的AUC是0.5)。你可能想尝试一些其他类型的模型,或者回到你的训练数据,看看你是否可以设计一些更好的功能。
·如果一条曲线看起来有点参差不齐,这有时是由于不同类型的分类器的行为。例如,决策树只有有限数量的决策节点,并且每个节点都有特定的概率。锯齿状来自于我们之前谈到的阈值与某个节点的概率交叉。锯齿状也通常来自测试数据的间隙。
从这些例子中可以看出,ROC曲线可以是评估分类器性能的一个简单而细致的工具。
如果你想了解更多关于机器学习模型评估的知识,请查看下面描述中的链接。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。