主要内容

性能曲线

性能曲线简介

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

什么是ROC曲线?

您可能希望更仔细地检查分类器的性能,例如,通过绘制Receiver Operating Characteristic (ROC)曲线。根据定义,ROC曲线[1,2]显示了分类器输出的不同阈值的真阳性率与假阳性率(等效,敏感性与1 -特异性)。例如,您可以使用它来找到最大限度地提高分类精度的阈值,或者从更广泛的角度来评估分类器在高敏感性和高特异性区域的表现。

使用以下方法评估分类器性能性能曲线

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

你可以用性能曲线使用任何分类器,或者更广泛地说,使用任何为输入数据实例返回数字分数的方法。按照这里采用的惯例,

  • 分类器为任何给定实例返回的高分表示该实例可能来自正类。

  • 分数低表示该实例可能来自负类。

对于一些分类器,您可以将分数解释为在点上观察到正类实例的后验概率X.这种分数的一个例子是决策树叶子中正观测值的分数。在这种情况下,分数的范围从0到1,积极和消极职业的分数加起来是统一的。其他方法可以返回介于负无穷和正无穷之间的分数,而不需要将分数与后验类别概率进行明显的映射。

性能曲线不会对输入分数范围施加任何要求。由于缺乏规范化,您可以使用性能曲线处理任何分类、回归或拟合方法返回的分数。性能曲线没有对输入分数的性质或不同类别分数之间的关系作出任何假设。举个例子,考虑一个有三个类的问题,一个BC,并假设某些分类器为两个实例返回的分数如下:

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

如果要计算类分离的性能曲线一个B,C如果忽略,您需要解决选择中的歧义问题一个B.你可以选择使用分数比率,s(A)/s(B),或得分差异,- s s (A) (B);这种选择可能取决于这些分数的性质和它们的正常化。性能曲线如果你只在课堂上提供分数,那么每次都会得到一分一个性能曲线不区分观察1和2。这种情况下的性能曲线可能不是最优的。

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

为输入,性能曲线接受一些数据的真实类标签和分类器为这些数据分配的分数。默认情况下,该实用程序计算Receiver Operating Characteristic (ROC)曲线并返回1 -特异性值,或假阳性率X敏感度,或真阳性率Y.您可以选择其他条件XY通过从几个提供的标准中选择一个或通过匿名函数指定任意的标准。可以使用以下命令显示计算出的性能曲线绘图(X,Y)

性能曲线可以计算各种标准的值,以绘图上的任一x——或y设在。所有这些标准都用一个2 × 2的混淆矩阵、一个2 × 2的代价矩阵和一个应用于类计数的2 × 1的比例向量来描述。

confusionchart矩阵,C,被定义为

T P F N F P T N

在哪里

  • P代表“积极的”。

  • N代表“负面”。

  • T代表“true”。

  • F代表“false”。

例如,混淆矩阵的第一行定义了分类器如何识别正类的实例:C(1,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)=0I=J.的灵活性,性能曲线允许您为正确的分类指定非零成本。

这两个尺度包括关于类概率的先验信息。性能曲线计算这些尺度之前规模(P) = (P) * N之前规模(N) = (N) * P和的标准化规模(P) +规模(N)对1。P = TP + FNN = TN + FP分别为正类和负类中的实例总数。然后,该函数将尺度作为乘法因子应用于对应类的计数:性能曲线将正班的计数乘以规模(P)从负类算起规模(N)例如,考虑正预测值的计算,PPV=TP/(TP+FP)TP计数来自正类和正类《外交政策》计数来自负类。因此,您需要进行扩展TP通过规模(P)《外交政策》通过规模(N)的修正公式PPV考虑先验概率,现在是:

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

如果数据中的所有分数都高于某个阈值,性能曲线将所有实例分类为“肯定的”.这意味着TP是正数类中的实例总数,并且《外交政策》是负类中的实例总数。在这种情况下,PPV是由先验简单给出的:

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

性能曲线函数返回两个向量,XY的绩效衡量标准。每个测量值都是混乱费用规模值。您可以通过名称请求特定的度量,或者提供函数句柄来计算自定义度量。你提供的功能应该接受混乱费用规模作为它的三个输入,并返回一个输出值向量。

标准X必须是正分类计数的单调函数,或等价地,提供的分数的阈值。如果性能曲线无法在的值之间执行一对一映射X标准和分数阈值,则退出并显示错误消息。

默认情况下,性能曲线的值XY所有可能的评分阈值标准。或者,它可以计算特定数量的减少X作为输入参数提供的值。在任何情况下,为请求的值,性能曲线计算M + 1XY.第一个值M + 1值都是特别的。性能曲线通过设置TP实例计数为零并进行设置TN到负类中的总计数。此值对应于“全部拒绝”阈值。在标准ROC曲线上,这意味着额外的点位于(0,0)

如果有输入分数中的值,性能曲线可以用两种方式来处理它们:

  • 它可以使用分数。

  • 它可以将它们添加到各自类中的错误分类计数中。

也就是说,对于任何阈值,具有阳性组的分数被计算为假阴性(FN),以及阴性组的分数被视为假阳性(《外交政策》).在本例中,第一个值XY通过设置TP至零并设置TN总数减去在负类中计算。为了举例说明,考虑一个例子,正类有两行,负类有两行,每对都有一个分数:

分数
0.2
积极的 0.7
积极的

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

TP FN 《外交政策》 TN
0 1 0 1
1 0 0 1
1 0 1 0

如果你用在他们各自的班级里,性能曲线计算如下表所示的性能度量。例如,截断值0.5对应于中间行,现在第2行和第4行被视为分类错误。注意,只有FN《外交政策》这两个表的列不同。

TP FN 《外交政策》 TN
0 2 1 1
1 1 1 1
1 1 2 0

对于包含三个或更多类的数据,性能曲线接受一个正类和一列负类作为输入。函数计算XY使用正数类中的计数进行估计的值TPFN,并使用所有负类中的计数进行估计TN《外交政策》性能曲线可以选择计算Y值为每个负类分别和,除了Y,返回一个大小为的矩阵-借-C,在那里是中的元素数XYC是负类的数量。您可以使用此功能监视负类贡献的组件。例如,您可以TP计数的X-轴心与《外交政策》计数的Y设在。在本例中,返回的矩阵显示了《外交政策》组件被划分为负类。

你也可以用性能曲线估计置信区间。性能曲线使用交叉验证或引导来计算置信范围。如果您为标签分数性能曲线使用交叉验证,并将单元格数组中的元素视为交叉验证折叠。若设置输入参数NBoot变成一个正整数,性能曲线生成nboot引导副本来计算点态置信界限。

性能曲线使用以下两种方法之一估计置信限:

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

  • 阈值平均(TA) -估计的置信界限XY以固定的阈值为阳性评分。使用TVals使用此方法计算置信界限的输入参数。

如果要使用观察权重而不是观察计数,您可以使用“重量”调用中的参数性能曲线.当使用该参数时,进行计算XYT或者通过交叉验证计算置信限,性能曲线使用你提供的观察权重而不是观察计数。为了通过bootstrap计算置信界限,性能曲线样品N从…里面N用权重代替多项式抽样概率。

另请参阅

|