主要内容

性能曲线

性能曲线简介

经过一个分类算法,如ClassificationniveBayes.treebagger受过数据方面的训练,您可能希望在特定测试数据集上检查算法的性能。一种常见的方法是计算性能的总体度量,比如在整个测试数据集上的平均二次损失或精度。

什么是ROC曲线?

例如,通过绘制接收器操作特征(ROC)曲线,更密切地检查分类器性能。根据定义,ROC曲线[1,2]显示了对分类器输出的不同阈值的真速率与假阳性率(等效,灵敏度与1特异性)。您可以使用它,例如,找到最大化分类准确性或以更广泛的术语进行评估的阈值,分类器如何在高灵敏度和高特异性区域中执行。

使用使用的分类器性能perfcurve

perfcurve计算分类器性能图的度量。在训练分类器之后,可以使用此实用程序在测试数据上评估分类器性能。各种度量方法,如均方误差、分类误差或指数损失,可以将一个分类器的预测能力总结在一个单一的数字中。但是,性能曲线提供了更多的信息,因为它允许您在输出的阈值范围内研究分类器的性能。

您可以使用perfcurve使用任何分类器,或者更广泛地说,使用为输入数据实例返回数字分数的任何方法。根据这里通过的惯例,

  • 标识符为任何给定实例返回的高分表明该实例很可能来自正类。

  • 分数越低,说明该实例很可能来自负类。

对于某些分类器,您可以将分数解释为在点处观察正类实例的后验概率X。这种得分的一个例子是决策树的叶片中的正视图的分数。在这种情况下,分数落入0到1的范围内,并且来自正和负类的分数加入Unity。其他方法可以在减号之间返回分数,而没有从分数到后级概率的任何明显映射。

perfcurve对输入分数范围没有任何要求。由于缺乏规范化,您可以使用perfcurve处理任何分类、回归或拟合方法返回的分数。perfcurve不做任何关于输入分数的性质或不同课程分数之间的关系的假设。举个例子,考虑一个有三个类的问题,一个B,C,并假设某个分类器为两个实例返回的得分如下:

一个 B C
实例1 0.4 0.5 0.1
实例2 0.4 0.1 0.5

如果您想要计算分离类的性能曲线一个B, 和C忽略了,您需要解决选择中的歧义一个超过B。您可以选择使用得分比,s (A) / s (B)或得分差异,s(a)--s(b);这个选择可能取决于这些分数的性质和它们的标准化。perfcurve每次都取一个分数。如果你只提供课堂分数一个perfcurve不能区分观察结果1和2。这种情况下的性能曲线可能不是最优的。

perfcurve用于返回分数的分类器,而不是仅返回预测类的分类器。作为一个反例,考虑一个决策树,对于有两个类的数据,它只返回硬分类标签0或1。在这种情况下,性能曲线减少到一个点,因为分类实例只能以一种方式分为积极和消极类别。

输入,perfcurve为某些数据和由分类器分配给这些数据的分数来占用真正的类标签。默认情况下,此实用程序计算接收器操作特性(ROC)曲线,并返回1特异性的值,或误差率X敏感度,或者说真阳性率Y。您可以选择其他标准XY通过选择几个提供的标准中的一个或通过匿名函数指定任意标准。您可以使用计算计算的性能曲线情节(X, Y)

perfcurve可以计算各种标准的值来绘制x- 或者y-轴。所有此类标准由2×2混淆矩阵,2×2成本矩阵和应用于阶级计数的2×1尺度向量。

confusionchart矩阵,C,被定义为

T P F N F P T N

在哪里

  • P代表“积极的”。

  • N代表“负面”。

  • T代表“真实”。

  • F代表“false”。

例如,混淆矩阵的第一行定义了分类器如何识别正类的实例:C (1)是正确识别的积极实例的计数C(1、2)将正实例误视为负实例的计数。

成本矩阵定义每个类别的错误分类成本:

C o 年代 t P | P C o 年代 t N | P C o 年代 t P | N C o 年代 t N | N

在哪里成本(I | J)指定类实例的代价是多少J去上课。通常成本(I | J) = 0为了我=我。的灵活性,perfcurve还允许您为正确的分类指定非零成本。

这两个量表包含了关于班级概率的先验信息。perfcurve通过取来计算这些刻度之前规模(P) = (P) * N之前规模(N) = (N) * P并使总和正常化规模(P) +规模(N)为1。P = TP + FNN = TN + FP是积极和负类的总实例。然后该功能将尺度应用于相应类的计数中的乘法因子:perfcurve将正类的计数乘以规模(P)从负类开始计数规模(n)。例如,考虑阳性预测值的计算,PPV = TP / (TP + FP)TP计数来自正面类和FP.计数来自否定类。因此,您需要进行扩展TP通过规模(P)FP.通过规模(n),和修改的公式PPV考虑到先验概率,现在是:

P P V 年代 c 一个 l e P T P 年代 c 一个 l e P T P + 年代 c 一个 l e N F P

如果数据中的所有分数高于特定阈值,perfcurve将所有实例分类为“积极”。这意味着TP正类的实例总数是和吗FP.是负类中的总体情况。在这种情况下,PPV是由先验给出的:

P P V p r o r P p r o r P + p r o r N

perfcurve函数返回两个向量,XY,绩效措施。每种措施都是一些功能困惑成本,规模价值观。您可以按名称请求特定度量或提供函数句柄以计算自定义度量。您提供的功能应该采取困惑成本,规模作为它的三个输入并返回一个向量的输出值。

的标准X必须是正分类计数的单调函数,或等价地,提供分数的阈值。如果perfcurve的值之间不能执行一对一映射X标准和评分阈值,它退出并有一个错误消息。

默认,perfcurve计算的值XY所有可能的分数阈值的标准。或者,它可以计算特定数量的数量X作为输入参数提供的值。在任何一种情况下,对于请求的值,perfcurve计算M + 1XY。第一个值M + 1价值观很特别。perfcurve通过设置TP实例计数为零和设置TN到负类的总数。这个值对应于拒绝所有的阈值。在标准ROC曲线上,这转化为一个额外的点放在(0,0)

如果有输入分数之间的值,perfcurve可以用两种方式处理它们:

  • 它可以使用分数。

  • 它可以将它们添加到相应类别的错误分类计数中。

也就是说,对于任何阈值,实例阳性组的分数被计算为假阴性(FN.)和实例阴性类的得分被视为假阳性(FP.).的第一个值XY是通过设置TP到零,然后设置TN到总数减去算在否定类中。为了说明问题,考虑这样一个例子:正类中有两行,负类中有两行,每对都有一个分数:

班级 分数
0.2
积极的 0.7
积极的

如果使用分数,随着分数的变化,perfcurve计算下表所示的性能度量。例如,截断值0.5对应于中间行,其中第1行和第3行被正确分类,第2行和第4行被省略。

TP FN. FP. TN
0 1 0 1
1 0 0 1
1 0 1 0

如果您添加行分数到各个类别中的虚假类别,perfcurve计算下表所示的性能度量。例如,0.5的截止值对应于现在行2和4的中间行被计数为错误分类。请注意,只有FN.FP.这两个表的列不同。

TP FN. FP. TN
0 2 1 1
1 1 1 1
1 1 2 0

对于具有三个或更多类的数据,perfcurve采用一个正类和输入的负类列表。该功能计算XY在正类中使用计数的值来估计TPFN.,并在所有否定类中使用计数进行估计TNFP.perfcurve可以计算Y值分别为每个负类,此外Y,返回一个大小为的矩阵——- - - - - -C, 在哪里元素的个数是多少XYC是负类的数量。您可以使用此功能来监视负类贡献的组件。例如,你可以绘制TP依靠X设在和FP.依靠Y-轴。在这种情况下,返回的矩阵显示了如何FP.组件被划分为多个负类。

你也可以使用perfcurve估计置信区间。perfcurve使用交叉验证或引导计算置信界限。如果你提供细胞阵列标签分数perfcurve使用交叉验证并将单元格阵列中的元素视为交叉验证折叠。如果设置输入参数NBoot到一个正整数,perfcurve生成nboot用Bootstrap副本计算点态置信界。

perfcurve使用以下两种方法之一估计置信限:

  • 垂直平均(VA) - 估计置信度界限YT在固定值X。使用xvals.输入参数用此方法计算置信限。

  • 阈值平均(TA) -估计置信界限XY在固定的阈值为正的班级分数。使用TVALS输入参数用此方法计算置信限。

要使用观察权重而不是观察计数,可以使用“重量”参数perfcurve。当使用此参数时,进行计算XYT或者通过交叉验证计算置信界限,perfcurve使用提供的观察权重而不是观察计数。通过Bootstrap计算置信界限,perfcurve样本NN使用您的权重用作为多项式采样概率的替代品。

另请参阅

|