作者 |MUSKAN097
编译 |VK
起源 |Analytics Vidhya
简介
你曾经胜利地构建了分类模型。你当初该怎么办?你如何评估模型的性能,也就是模型在预测后果方面的体现。为了答复这些问题,让咱们通过一个简略的案例钻研理解在评估分类模型时应用的度量。
让咱们通过案例钻研深刻理解概念
在这个全球化的时代,人们常常从一个中央旅行到另一个中央。因为乘客排队等待、办理登机手续、访问食品供应商以及应用卫生间等设施,机场可能会带来危险。在机场追踪携带病毒的乘客有助于避免病毒的流传。
考虑一下,咱们有一个机器学习模型,将乘客分为 COVID 阳性和阴性。在进行分类预测时,可能会呈现四种类型的后果:
真正例(TP):当你预测一个察看值属于一个类,而它实际上属于那个类。在这种状况下,也就是预测为 COVID 阳性并且实际上也是阳性的乘客。
真反例(TN):当你预测一个察看不属于一个类,它实际上也不属于那个类。在这种状况下,也就是预测为非 COVID 阳性(阴性)并且实际上不是 COVID 阳性(阴性)的乘客。
假正例(FalsePositive,FP):当你预测一个察看值属于某个类,而实际上它并不属于该类时。在这种状况下,也就是预测为 COVID 阳性但实际上不是 COVID 阳性(阴性)的乘客。
假反例(FN):当你预测一个察看不属于一个类,而它实际上属于那个类。在这种状况下,也就是预测为非 COVID 阳性(阴性)并且实际上是 COVID 阳性的乘客。
混同矩阵
为了更好地可视化模型的性能,这四个后果被绘制在混同矩阵上。
准确度
对!你说得对,咱们心愿咱们的模型能集中在真正的正例和反例。准确度是一个指标,它给出了咱们的模型正确预测的分数。模式上,准确度有以下定义:
准确度 = 正确预测数 / 预测总数。
当初,让咱们思考均匀每天有 50000 名乘客出行。其中有 10 个是 COVID 阳性。
进步准确率的一个简略办法是将每个乘客都归为 COVID 阴性。所以咱们的混同矩阵如下:
本案例的准确度为:
准确度 =49990/50000=0.9998 或 99.98%
神奇!!这是正确的?那么,这真的解决了咱们正确分类 COVID 阳性乘客的目标吗?
对于这个非凡的例子,咱们试图将乘客标记为 COVID 阳性和阴性,心愿可能辨认出正确的乘客,我能够通过简略地将每个人标记为 COVID 阴性来取得 99.98% 的准确率。
显然,这是一种比咱们在任何模型中见过的更准确的办法。但这并不能解决目标。这里的目标是辨认 COVID 阳性的乘客。在这种状况下,准确度是一个可怕的衡量标准,因为它很容易取得十分好的准确度,但这不是咱们感兴趣的。
所以在这种状况下,准确度并不是评估模型的好办法。让咱们来看看一个十分风行的措施,叫做召回率。
召回率(敏感度或真正例率)
召回率给出你正确辨认为阳性的分数。
当初,这是一项重要措施。在所有阳性的乘客中,你正确辨认的分数是多少。回到咱们以前的策略,把每个乘客都标为阴性,这样召回率为零。
Recall = 0/10 = 0
因而,在这种状况下,召回率是一个很好的衡量标准。它说,把每个乘客都认定为 COVID 阴性的可怕策略导致了零召回率。咱们想最大限度地进步召回率。
作为对上述每个问题的另一个侧面答复,请思考 COVID 的每一个问题。每个人走进机场,模型都会给他们贴上阳性标签。给每位乘客贴上阳性标签是不好的,因为在他们登机前,理论考察每一位乘客所需的费用是微小的。
混同矩阵如下:
召回率将是:
Recall = 10/(10+0) = 1
这是个大问题。因而,论断是,准确度是个坏主意,因为给每个人贴上负面标签能够进步准确度,但心愿召回率在这种状况下是一个很好的衡量标准,但起初意识到,给每个人贴上侧面标签也会减少召回率。
所以独立的召回率并不是一个好的衡量标准。
还有一种测量方法叫做精确度
精确度
精确度给出了所有预测为阳性后果中正确辨认为阳性的分数。
思考到咱们的第二个谬误策略,行将每位乘客标记为阳性,其精确度将为:
Precision = 10 / (10 + 49990) = 0.0002
尽管这个谬误的策略有一个好的召回值 1,但它有一个可怕的精确度值 0.0002。
这阐明单纯的召回并不是一个好的衡量标准,咱们须要思考精确度。
思考到另一种状况(这将是最初一种状况,我保障:P)将排名靠前的乘客标记为 COVID 阳性,即标记出患 COVID 的可能性最高的乘客。假如咱们只有一个这样的乘客。这种状况下的混同矩阵为:
精确度为:1/(1+0)=1
在这种状况下,精度值很好,然而让咱们检查一下召回率:
Recall = 1 / (1 + 9) = 0.1
在这种状况下,精度值很好,但召回值较低。
场景 | 准确度 | 召回率 | 精确度 |
---|---|---|---|
将所有乘客分类为阴性 | 高 | 低 | 低 |
将所有乘客分类为阳性 | 低 | 高 | 低 |
排名靠前的乘客标记为 COVID 阳性 | 高 | 低 | 低 |
在某些状况下,咱们十分确定咱们想要最大限度地进步召回率或精确性,而代价是其他人。在这个标记乘客的案例中,咱们真的心愿能正确地预测 COVID 阳性的乘客,因为不预测乘客的正确性是十分低廉的,因为容许 COVID 阳性的人通过会导致流传的减少。所以咱们更感兴趣的是召回率。
可怜的是,你不能两者兼得:进步精确度会升高召回率,反之亦然。这称为准确度 / 召回率衡量。
准确度 / 召回率衡量
一些分类模型输入的概率介于 0 和 1 之间。在咱们将乘客分为 COVID 阳性和阴性的案例中,咱们心愿防止脱漏阳性的理论案例。特地是,如果一个乘客的确是阳性的,但咱们的模型无奈辨认它,这将是十分蹩脚的,因为病毒很有可能通过容许这些乘客登机而流传。所以,即便有一点狐疑有 COVID,咱们也要贴上阳性的标签。
所以咱们的策略是,如果输入概率大于 0.3,咱们将它们标记为 COVID 阳性。
这会导致较高的召回率和较低的精确度。
思考与此相反的状况,当咱们确定乘客为阳性时,咱们心愿将乘客分类为阳性。咱们将概率阈值设置为 0.9,即当概率大于或等于 0.9 时,将乘客分类为正,否则为负。
所以一般来说,对于大多数分类器来说,当你扭转概率阈值时,会在召回率和精确度之间进行衡量。
如果须要比拟具备不同准确召回值的不同型号,通常能够不便地将精度和召回合并为一个度量。对的!!咱们须要一个同时思考召回率和精确度的指标来计算性能。
F1 分数
它被定义为模型精度和召回率的和谐平均值。
你肯定想晓得为什么和谐均匀而不是简略均匀?咱们应用和谐平均值是因为它对十分大的值不敏感,不像简略的平均值。
比方说,咱们有一个精度为 1 的模型,召回率为 0 给出了一个简略的平均值为 0.5,F1 分数为 0。如果其中一个参数很低,第二个参数在 F1 分数中就不再重要了。F1 分数偏向于具备类似精确度和召回率的分类器。
因而,如果你想在精确度和召回率之间寻求均衡,F1 分数是一个更好的衡量标准。
ROC/AUC 曲线
ROC 是另一种罕用的评估工具。它给出了模型在 0 到 1 之间每一个可能的决策点的敏感性和特异性。对于具备概率输入的分类问题,阈值能够将概率输入转换为分类。所以通过扭转阈值,能够扭转混同矩阵中的一些数字。但这里最重要的问题是,如何找到适合的阈值?
对于每个可能的阈值,ROC 曲线绘制假正例率与真正例率。
假正例率:被谬误分类为正例的反例实例的比例。
真正例率:正确预测为正例的正例实例的比例。
当初,思考一个低阈值。因而,在所有按升序排列的概率中,低于 0.1 的被认为是负的,高于 0.1 的都被认为是正的。抉择阈值是自在的
然而如果你把你的门槛设得很高,比方 0.9。
以下是同一模型在不同阈值下的 ROC 曲线。
从上图能够看出,真正例率以更高的速率减少,但在某个阈值处,TPR 开始逐步减小。每减少一次 TPR,咱们就要付出代价—FPR 的减少。在初始阶段,TPR 的减少高于 FPR
因而,咱们能够抉择 TPR 高而 FPR 低的阈值。
当初,让咱们看看 TPR 和 FPR 的不同值通知了咱们对于这个模型的什么。
对于不同的模型,咱们会有不同的 ROC 曲线。当初,如何比拟不同的模型?从下面的曲线图能够看出,曲线在下面代表模型是好的。比拟分类器的一种办法是测量 ROC 曲线下的面积。
AUC(模型 1)>AUC(模型 2)>AUC(模型 2)
因而模型 1 是最好的。
总结
咱们理解了用于评估分类模型的不同度量。何时应用哪些指标次要取决于问题的性质。所以当初回到你的模型,问问本人你想要解决的次要目标是什么,抉择正确的指标,并评估你的模型。
原文链接:https://www.analyticsvidhya.c…
欢送关注磐创 AI 博客站:
http://panchuang.net/
sklearn 机器学习中文官网文档:
http://sklearn123.com/
欢送关注磐创博客资源汇总站:
http://docs.panchuang.net/