经过一个分类算法,如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)(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使用您的重量替换为多项式采样概率。