经过一个分类算法,如ClassificationniveBayes.
或treebagger
受过数据方面的训练,您可能希望在特定测试数据集上检查算法的性能。一种常见的方法是计算性能的总体度量,比如在整个测试数据集上的平均二次损失或精度。
例如,通过绘制接收器操作特征(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
。您可以选择其他标准X
和Y
通过选择几个提供的标准中的一个或通过匿名函数指定任意标准。您可以使用计算计算的性能曲线情节(X, Y)
。
perfcurve
可以计算各种标准的值来绘制x- 或者y-轴。所有此类标准由2×2混淆矩阵,2×2成本矩阵和应用于阶级计数的2×1尺度向量。
的confusionchart
矩阵,C
,被定义为
在哪里
P代表“积极的”。
N代表“负面”。
T代表“真实”。
F代表“false”。
例如,混淆矩阵的第一行定义了分类器如何识别正类的实例:C (1)
是正确识别的积极实例的计数C(1、2)
将正实例误视为负实例的计数。
成本矩阵定义每个类别的错误分类成本:
在哪里成本(I | J)
指定类实例的代价是多少J
去上课我
。通常成本(I | J) = 0
为了我=我
。的灵活性,perfcurve
还允许您为正确的分类指定非零成本。
这两个量表包含了关于班级概率的先验信息。perfcurve
通过取来计算这些刻度之前规模(P) = (P) * N
和之前规模(N) = (N) * P
并使总和正常化规模(P) +规模(N)
为1。P = TP + FN
和N = TN + FP
是积极和负类的总实例。然后该功能将尺度应用于相应类的计数中的乘法因子:perfcurve
将正类的计数乘以规模(P)
从负类开始计数规模(n)
。例如,考虑阳性预测值的计算,PPV = TP / (TP + FP)
。TP
计数来自正面类和FP.
计数来自否定类。因此,您需要进行扩展TP
通过规模(P)
和FP.
通过规模(n)
,和修改的公式PPV
考虑到先验概率,现在是:
如果数据中的所有分数高于特定阈值,perfcurve
将所有实例分类为“积极”
。这意味着TP
正类的实例总数是和吗FP.
是负类中的总体情况。在这种情况下,PPV
是由先验给出的:
的perfcurve
函数返回两个向量,X
和Y
,绩效措施。每种措施都是一些功能困惑
,成本
,规模
价值观。您可以按名称请求特定度量或提供函数句柄以计算自定义度量。您提供的功能应该采取困惑
,成本
,规模
作为它的三个输入并返回一个向量的输出值。
的标准X
必须是正分类计数的单调函数,或等价地,提供分数的阈值。如果perfcurve
的值之间不能执行一对一映射X
标准和评分阈值,它退出并有一个错误消息。
默认,perfcurve
计算的值X
和Y
所有可能的分数阈值的标准。或者,它可以计算特定数量的数量X
作为输入参数提供的值。在任何一种情况下,对于米
请求的值,perfcurve
计算M + 1
值X
和Y
。第一个值M + 1
价值观很特别。perfcurve
通过设置TP
实例计数为零和设置TN
到负类的总数。这个值对应于拒绝所有的
阈值。在标准ROC曲线上,这转化为一个额外的点放在(0,0)
。
如果有南
输入分数之间的值,perfcurve
可以用两种方式处理它们:
它可以使用南
分数。
它可以将它们添加到相应类别的错误分类计数中。
也就是说,对于任何阈值,实例南
阳性组的分数被计算为假阴性(FN.
)和实例南
阴性类的得分被视为假阳性(FP.
).的第一个值X
或Y
是通过设置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
采用一个正类和输入的负类列表。该功能计算X
和Y
在正类中使用计数的值来估计TP
和FN.
,并在所有否定类中使用计数进行估计TN
和FP.
。perfcurve
可以计算Y
值分别为每个负类,此外Y
,返回一个大小为的矩阵米
——- - - - - -C
, 在哪里米
元素的个数是多少X
或Y
和C
是负类的数量。您可以使用此功能来监视负类贡献的组件。例如,你可以绘制TP
依靠X
设在和FP.
依靠Y
-轴。在这种情况下,返回的矩阵显示了如何FP.
组件被划分为多个负类。
你也可以使用perfcurve
估计置信区间。perfcurve
使用交叉验证或引导计算置信界限。如果你提供细胞阵列标签
和分数
,perfcurve
使用交叉验证并将单元格阵列中的元素视为交叉验证折叠。如果设置输入参数NBoot
到一个正整数,perfcurve
生成nboot
用Bootstrap副本计算点态置信界。
perfcurve
使用以下两种方法之一估计置信限:
垂直平均(VA) - 估计置信度界限Y
和T
在固定值X
。使用xvals.
输入参数用此方法计算置信限。
阈值平均(TA) -估计置信界限X
和Y
在固定的阈值为正的班级分数。使用TVALS
输入参数用此方法计算置信限。
要使用观察权重而不是观察计数,可以使用“重量”
参数perfcurve
。当使用此参数时,进行计算X
,Y
和T
或者通过交叉验证计算置信界限,perfcurve
使用提供的观察权重而不是观察计数。通过Bootstrap计算置信界限,perfcurve
样本N的N使用您的权重用作为多项式采样概率的替代品。