主要内容

ROC曲线与绩效指标

本主题介绍分类的性能指标,包括受试者工作特征(ROC)曲线和ROC曲线下面积(AUC),并介绍rocmetrics对象,您可以使用它来计算二进制和多类分类问题的性能指标。

ROC曲线简介

在训练分类模型之后,您可以在特定的测试数据集上检查算法的性能。一种常见的方法是计算性能的总体度量,例如二次损失或精度,对整个测试数据集进行平均。您可以通过绘制ROC曲线和计算性能指标来更仔细地检查分类器的性能。例如,您可以找到使分类精度最大化的阈值,或者评估分类器在高灵敏度和高特异性区域中的表现。

受试者工作特征(ROC)曲线

ROC曲线显示了不同分类评分阈值的真阳性率(TPR,或敏感性)与假阳性率(FPR,或1-特异性)。

ROC曲线上的每个点对应于特定阈值的一对TPR和FPR值。您可以通过改变阈值来找到不同的TPR和FPR值对,然后使用这些值对创建ROC曲线。

对于多类分类问题,可以使用one-versus-all编码设计,并为每个类找到ROC曲线。单对全编码设计将多类分类问题视为一组二元分类问题,并在每个二元问题中假设一个类为正,其余为负。

二进制分类器通常将观察结果分类为产生较大分数的类,这对应于正调整分对于一个单一对所有的二元分类问题。也就是说,分类器通常使用0作为阈值,并确定观察结果是正的还是负的。例如,如果一个观察值的调整分数为0.2,那么阈值为0的分类器将该观察值分配给正类。通过将阈值应用于所有观测值,您可以找到一对TPR和FPR值,并将这一对作为ROC曲线上的单个点。现在,假设您使用一个新的阈值0.25。然后,阈值为0.25的分类器将调整分数为0.2的观察结果分配给否定类。通过对所有观测值应用新的阈值,您可以找到一对新的TPR和FPR值,并在ROC曲线上有一个新的点。通过对不同的阈值重复此过程,您可以找到TPR和FPR值对,并使用这些值对创建ROC曲线。

ROC曲线下面积(AUC)

ROC曲线下的面积(AUC)对应于ROC曲线(TPR值)相对于FPR的积分玻璃钢0玻璃钢1

AUC提供了跨越所有可能阈值的综合性能度量。AUC值在此范围内01, AUC值越大,分类器性能越好。

  • 一个完美的分类器总是正确地将正类观测值赋给正类,并且具有的真正确率为1对于任何阈值。因此,直线通过(0,0)[0, 1],[1]为完美分类器,AUC值为1

  • 随机分类器返回随机评分值,对于任何阈值,假阳性率和真阳性率都具有相同的值。因此,随机分类器的ROC曲线位于对角线上,AUC值为0.5

性能曲线MATLAB

您可以通过创建一个ROC曲线和其他性能曲线rocmetrics对象。的rocmetricsObject支金宝app持二进制和多类分类问题,并提供以下对象函数:

  • 情节-绘制ROC或其他分类器性能曲线。情节返回一个ROCCurve每条曲线的图形对象。您可以修改对象的属性来控制每个曲线的外观。详细信息请参见ROCCurve属性

  • 平均-计算多类问题的平均ROC曲线的性能指标。

  • addMetrics-计算额外的分类性能指标。

您还可以通过提供交叉验证的输入或通过引导输入数据来计算性能曲线的置信区间。使用置信区间需要统计和机器学习工具箱™。

训练分类器后,使用性能曲线来评估分类器在测试数据上的性能。诸如均方误差、分类误差或指数损失等各种度量可以将分类器的预测能力总结为单个数字。然而,性能曲线提供了更多信息,因为它允许您在分类分数的阈值范围内探索分类器的性能。

多类分类的ROC曲线

对于多类分类器,使用rocmetrics函数为每个类计算一个相对于所有ROC曲线的性能指标,而平均函数计算ROC曲线平均值的度量。您可以使用情节函数来绘制每个类的ROC曲线和平均ROC曲线。

OVA编码设计

OVA编码设计将多类分类问题简化为一组二元分类问题。在这种编码设计中,每个二进制分类将一个类视为正类,其余类视为负类。rocmetrics采用OVA编码设计进行多类分类,并使用类为正的二元分类对每个类的性能进行评估。

例如,三个类的OVA编码设计提出了三个二进制分类:

二进制1 二进制 2 二进制3 类1 1 1 1 二班 1 1 1 3班 1 1 1

每行对应一个类,每列对应一个二元分类问题。第一个二元分类假设类1是一个正类,其余的类都是负类。rocmetrics通过使用第一个二元分类问题来评估第一个类的性能。

rocmetrics如果将分类分数指定为两列矩阵,则OVA编码设计也适用于二进制分类问题。rocmetrics提出了两个单一对所有的二元分类问题,每个问题都将一个类作为正类,另一个类作为负类,并且rocmetrics得到两条ROC曲线。你可以用其中一个来计算二元分类问题。

平均表现指标

方法可以计算平均ROC曲线的指标平均函数。或者,您可以使用情节函数来计算指标并绘制平均ROC曲线。有关示例,请参见求平均ROC曲线(例子平均).

平均而且情节金宝app支持三种计算平均假阳性率(FPR)和平均真阳性率(TPR)的算法来求得平均ROC曲线:

  • 微平均-软件结合所有one-versus-all将二元分类问题分解为一个二元分类问题,计算平均性能指标如下:

    1. 中的值进行转换标签的属性rocmetrics对象的逻辑值1真正的)表示每个二进制问题的正类。

    2. 将标签的转换向量(每个二进制问题中的一个向量)堆叠成一个向量。

    3. 属性的矩阵进行转换调整值在分类分数中分数属性)通过叠加矩阵的列来生成一个向量。

    4. 计算的分量混淆矩阵对于每个阈值(调整分数的每个不同值)的组合二进制问题。混淆矩阵包含真阳性(TP)、假阴性(FN)、假阳性(FP)和真阴性(TN)的实例数。

    5. 根据混淆矩阵的分量计算平均FPR和TPR。

  • 宏观平均-该软件计算FPR和TPR的平均值,通过对所有二元分类问题的值进行平均。

    该软件使用三个指标-阈值,FPR和tpr -计算平均值如下:

    1. 确定一个固定的度量。如果你指定FixedMetricrocmetrics作为“FalsePositiveRate”“TruePositiveRate”,则函数保持指定的度量值固定。否则,函数保持固定的阈值。

    2. 的所有不同值指标属性。

    3. 为每个二进制问题的其他两个度量找到相应的值。

    4. 求所有二元问题的FPR和TPR值的平均值。

  • 加权宏观平均-该软件使用宏观平均算法并使用先验类概率(优先级概率)计算FPR和TPR的加权平均值之前属性)作为权重。

性能指标

rocmetrics对象支持以下内金宝app置性能指标:

  • 真阳性数(TP)

  • 假阴性数(FN)

  • 误报数(FP)

  • 真阴性数(TN)

  • TP和FP的和

  • 阳性预测率(RPP)

  • 阴性预测率(RNP)

  • 精度

  • 真阳性率(TPR)、回忆率或敏感性

  • 假阴性率(FNR),或漏检率

  • 假阳性率(FPR)、沉降物或1-特异性

  • 真阴性率(TNR),或特异性

  • 正预测值(PPV),或精密度

  • 阴性预测值(NPR)

  • 预期成本

rocmetrics还支持指定金宝app为函数句柄的自定义度量。详细信息请参见AdditionalMetrics的名称-值参数rocmetrics函数。

rocmetrics为每个阈值计算性能度量值one-versus-all使用混淆矩阵、尺度向量和错误分类代价矩阵的二元分类问题。每个性能指标都是一个混淆矩阵和尺度向量的函数。预期成本也是错误分类成本矩阵的函数,这是一个自定义度量。

  • 混淆矩阵——混淆矩阵包含真阳性(TP)、假阴性(FN)、假阳性(FP)和真阴性(TN)的实例数。rocmetrics为每个二进制问题计算不同阈值的混淆矩阵。

  • 缩放向量-缩放向量由先验类概率和真标签中的类数量定义。rocmetrics类指定的先验类概率中查找每个二进制问题的概率和类数之前属性指定的名称-值参数和true标签标签输入参数。

  • 错误分类成本矩阵-rocmetrics属性指定的错误分类代价矩阵成本每个二进制问题的值的名称-值参数。

默认情况下,rocmetrics使用所有distinct调整分值作为每个二进制问题的阈值。有关阈值的详细信息,请参见阈值、固定度量和固定度量值

混淆矩阵

混淆矩阵定义为

T P F N F P T N

在哪里

  • P代表“积极”。

  • N代表“消极”。

  • T代表“真”。

  • F代表“假”。

例如,混淆矩阵的第一行定义了分类器如何识别阳性类的实例:TP是正确识别的阳性实例的计数,FN是被错误识别为阴性的阳性实例的计数。

rocmetrics为每个单一对所有的二进制分类计算各种阈值的混淆矩阵。如果一个观测值的得分大于或等于阈值,则该观测值将被划分为正类。

优先类别概率

默认情况下,rocmetrics使用经验概率,这是真实标签中的类频率。

rocmetrics可实现1——- - - - - -K先验概率向量π到一个1——- - - - - -2向量为每一个单一对所有的二元分类,其中K是类的数量。

的先验概率k一种二进制分类,其中正数类为k类是 π k 1 π k ,在那里πk是类的先验概率吗k在多阶层问题中。

尺度向量

rocmetrics定义一个缩放向量年代k的大小2——- - - - - -1对于每个单一对所有的二元分类问题:

年代 k 1 π k N + 1 π k P π k N 1 π k P

在哪里P而且N分别表示正类和负类的总实例。也就是说,P是TP和FN的和,和N为FP与TN的和。年代k(1)(第一个元素年代k),年代k(2)(第二要素年代k)为正面类别的量表(kTh类)和负类(其余)分别。

rocmetrics将刻度值作为乘法因子应用于对应类的计数。也就是说,该函数将正类中的计数乘以年代k(1)并从负类计数年代k(2)。例如,要计算正预测值(PPV = tp /(tp + fp))k二叉问题,rocmetrics尺度PPV如下:

P P V 年代 k 1 T P 年代 k 1 T P + 年代 k 2 F P

错误分类成本矩阵

默认情况下,rocmetrics使用一个K——- - - - - -K成本矩阵C,在那里Cj) =1如果~ =j,Cj) =0如果jC (i, j)将一个点分类的成本是多少j如果它真正的阶级是(即行对应真实的类,列对应预测的类)。

rocmetrics可实现K——- - - - - -K成本矩阵C到一个2——- - - - - -2每个单一对全部二进制分类的矩阵:

C k 0 成本 k N | P 成本 k P | N 0

Ck成本矩阵是k一种二进制分类,其中正数类为kTh类,其中成本k(N | P)将一个正类错误分类为负类的代价是成本k(P | N)是错误地将一个负类分类为正类的代价。

为类k,让πk+而且πk-K——- - - - - -1具有以下值的向量:

π k + π 如果 k 0 否则 π k 0 如果 k π 否则

πki+而且πki-元素的Thπk+而且πk-,分别。

分类一个正类(classk(其余的)观察属于否定类

成本 k N | P π k + C π k

同样地,将一个负类观测值划分为正类观测值的代价是

成本 k P | N π k C π k +

分类评分和阈值

rocmetrics函数从输入分类分数或FixedMetricValues名称-值参数。

分类分数输入rocmetrics

rocmetrics接受分类分数(分数)在大小矩阵中n——- - - - - -K或者一个长度向量n,在那里n观察的次数和K是数字类。对于交叉验证的数据,分数可以是向量的单元格数组或矩阵的单元格数组。

  • 大小矩阵n——- - - - - -K——指定分数类的第二个输出参数分类函数用于分类模型。输出的每一行都包含对所有类的观察的分类分数。类的顺序与网络中类的顺序相匹配。例如,如果你的分类网络有一个classificationLayer输出层,您可以访问类名使用net.Layers(结束). class。你可以指定分数作为一个矩阵,同时适用于二元分类和多类分类问题。

    如果你使用矩阵格式,rocmetrics调整每个类的分类分数相对于其他类的分数。具体来说,给定一个观察值,一个类的调整分数是该类的分数与其他类的分数最大值之间的差值。详情请参见多类分类问题的调整分数

  • 长度向量n——指定分数当您只有一个类别的分类分数时使用向量。当你想对一个多类问题使用不同类型的调整分数时,矢量输入也很适合。举个例子,考虑一个有三个类的问题,一个B,C。如果你想计算分离类的性能曲线一个而且B,C如果忽略了,则需要解决选择中的歧义一个B。你可以使用分数比率s (A) / s (B)或者分数差异- s s (A) (B)然后把向量传递给rocmetrics;这种方法取决于分数的性质及其标准化。

你可以使用rocmetrics使用为输入数据实例返回数值分数的任何分类器或任何函数。

  • 分类器对给定实例和类返回的分数越高,表示该实例可能来自相应的类。

  • 分数低表示实例不可能来自相应的类。

rocmetrics不对输入分数范围施加任何要求。由于缺乏标准化,您可以使用rocmetrics处理由任何分类、回归或拟合函数返回的分数。rocmetrics没有对输入分数的性质做任何假设。

rocmetrics用于返回分数的分类器,而不是仅返回预测类的分类器。考虑这样一个分类器:对于包含两个类的数据,只返回分类标签0或1。在这种情况下,性能曲线减少到一个点,因为软件只能以一种方式将分类实例分为正类和负类。

多类分类问题的调整分数

对于每一节课,rocmetrics调整分类分数(输入参数分数rocmetrics)相对于你指定的其他课程的分数分数作为一个矩阵。具体来说,给定一个观察值,一个类的调整分数是该类的分数与其他类的分数最大值之间的差值。

例如,如果你有年代1年代2年代3.在一排分数对于三个类别的分类问题,调整分值为年代1-马克斯年代2年代3.),年代2-马克斯年代1年代3.),年代3.-马克斯年代1年代2)]

rocmetrics使用每个类的调整分值计算性能指标。

对于二进制分类问题,您可以指定分数作为一个两列矩阵或者列向量。使用两列矩阵是一种更简单的选择,因为预测分类对象的函数将分类分数作为矩阵返回,您可以将其传递给rocmetrics。如果你在两列矩阵中传递分数,rocmetrics调整分数的方式与调整多类分类分数的方式相同,并且计算两个类的性能指标。您可以使用这两个类中的一个的度量值来评估二元分类问题。返回的类的度量值rocmetrics当你传递一个两列矩阵时,等效于返回的度量值rocmetrics当您将类的分类分数指定为列向量时。

模型工作点

模型工作点表示典型阈值对应的FPR和TPR。

类的输入格式决定了典型的阈值分数属性时指定的参数(分类分数)rocmetrics对象:

  • 如果你指定分数作为一个矩阵,rocmetrics假设中的值分数分数是否用于多类分类问题和用途调整分值。多类分类模型将观测结果划分为产生最大分数的类别,这对应于调整分数中的非负分数。因此,阈值为0

  • 如果你指定分数作为一个列向量,rocmetrics假设中的值分数类的后验概率是否在一会。二元分类模型将观测数据分为产生较高后验概率的一类,即后验概率大于0.5。因此,阈值为0.5

对于二进制分类问题,您可以指定分数作为一个两列矩阵或者列向量。但是,如果分类分数不是后验概率,则必须指定分数作为一个矩阵。二元分类器将观察结果分类为产生较大分数的类,这相当于产生非负调整分数的类。因此,如果指定分数作为二叉分类器的矩阵,rocmetrics可以使用适用于多类分类器的相同方案找到正确的模型工作点。如果你指定分类分数不是后验概率作为向量,rocmetrics不能识别正确的模型操作点,因为它总是使用0.5作为模型工作点的阈值。

情节函数在每个ROC曲线的模型工作点上显示一个填充的圆标记(参见ShowModelOperatingPoint).该函数选择一个与典型阈值对应的点。如果曲线没有典型阈值的数据点,该函数会找到一个比典型阈值大的最小阈值的点。曲线上的点表示与典型阈值性能相同的性能。

阈值、固定度量和固定度量值

rocmetrics找到与固定值对应的ROC曲线和其他度量值(FixedMetricValues固定度量的名称-值参数)(FixedMetric名称-值参数),并将值存储在指标属性作为表。

默认的FixedMetric值是“阈值”,和默认的FixedMetricValues值是“所有”。对于每一节课,rocmetrics使用所有distinct调整分值作为阈值,计算各分量的混淆矩阵对于每个阈值,然后使用混淆矩阵组件计算性能指标。

如果使用默认值FixedMetricValues值(“所有”),指定一个非默认值FixedMetric值不会改变软件行为,除非您指定计算置信区间。如果rocmetrics计算置信区间,然后保持FixedMetric固定在FixedMetricValues并计算其他指标的置信区间。详情请参见点态置信区间

的非默认值FixedMetricValuesrocmetrics查找与指定的固定度量值对应的阈值(FixedMetricValuesFixedMetric),并使用阈值计算其他性能度量值。

  • 如果你设置UseNearestNeighbor参数的名称-值,然后rocmetrics使用与指定的固定度量值相对应的精确阈值。

  • 如果你设置UseNearestNeighbor真正的,那么在调整后的分数中,rocmetrics找到与每个指定的固定度量值对应的最接近阈值的值。

指标属性包括一个额外的阈值,该阈值复制每个类的最大阈值,以便ROC曲线从原点开始(0,0)。附加阈值表示拒绝所有阈值,其中TP《外交政策》0(无阳性实例,即零真阳性实例和零假阳性实例)。

另一个特殊的阈值指标接受所有阈值,这是最小的阈值TNFN0(无阴性实例,即0个真阴性实例和0个假阴性实例)。

请注意,阳性预测值(PPV = tp /(tp + fp))是对于“全部拒绝”阈值,以及负预测值(NPV = tn /(tn + fn))是为“全部接受”阈值。

NaN分值

rocmetrics流程分类分数输入(分数)以以下两种方式之一:

  • 如果你指定NaNFlag= " omitnan "(默认)rocmetrics使用分数。

  • 如果你指定NaNFlag = " includenan ",然后rocmetrics的实例。对于每一个单一对所有的二元分类,错误分类的分数在各自的类别中计数。也就是说,对于任何阈值,软件都使用实例计数从阳性类中得分为假阴性(FN),并使用阴性类的分数为假阳性(FP)。该软件计算对应于阈值的度量1通过将真阳性(TP)实例的数量设置为零,并将真阴性(TN)实例的数量设置为总计数减去算在否定类里。

考虑一个例子,两行是正类,两行是负类,每对都有一个分数:

真实船级标签 分类分
0.2
积极的 0.7
积极的

如果使用分数(NaNFlag = " omitnan "),则随着分数阈值的变化,rocmetrics计算性能指标,如下表所示。例如,阈值为0.5对应于中间行,其中rocmetrics正确分类第1行和第3行,省略第2行和第4行。

阈值 TP FN 《外交政策》 TN
1 0 1 0 1
0.5 1 0 0 1
0 1 0 1 0

如果你添加行在各类别中,虚假类别的分数(NaNFlag = " includenan "),rocmetrics计算性能指标,如下表所示。例如,阈值为0.5对应于中间行,其中rocmetrics将第2行和第4行计算为错误分类。注意,只有FN而且《外交政策》这两个表的列不同。

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

点态置信区间

rocmetrics通过使用自举样本或交叉验证数据,计算性能指标的点级置信区间,包括AUC值和得分阈值。对象中存储的值指标而且AUC属性。

请注意

使用置信区间需要统计和机器学习工具箱。

  • 引导-若要使用引导计算置信区间,请设置NumBootstraps正整数的名称-值参数。rocmetrics生成NumBootstraps引导样品。该函数通过随机选择创建每个bootstrap样本n走出n带有替换的输入数据行。有关示例,请参见使用引导计算置信区间

  • 交叉验证——要使用交叉验证计算置信区间,请为真实类标签指定交叉验证数据(标签)、分类分数(分数)和观测权重(权重)使用单元格数组。rocmetrics将单元格数组中的元素视为交叉验证折叠。

不能同时指定两个选项。如果你指定一个自定义度量AdditionalMetrics,您必须使用自举来计算置信区间。rocmetrics不支持自定义指标的金宝app交叉验证。

rocmetrics持有FixedMetric(阈值,FPR, TPR,或中指定的度量AdditionalMetrics)定在FixedMetricValues并计算AUC上的置信区间和与中的值对应的点的其他度量FixedMetricValues

  • 阈值平均(TA)(当FixedMetric“阈值”(默认))rocmetrics在固定的阈值上估计性能指标的置信区间。该函数在固定阈值处采样,并对相应的度量值求平均值。

  • 垂直平均(VA)(当FixedMetric绩效指标)-rocmetrics在固定的度量值上估计阈值和其他性能度量的置信区间。该函数在固定的度量值上进行采样,并对相应的阈值和度量值求平均值。

该函数仅在以下情况下估计AUC值的置信区间FixedMetric“阈值”“FalsePositiveRate”,或“TruePositiveRate”

参考文献

[1] Fawcett, T.《ROC图表:研究人员的注意事项和实际考虑》,机器学习31日。1(2004): 1 - 38。

茨威格,M.和G.坎贝尔。受试者工作特征(ROC)图:临床医学的基本评估工具。临床化学39岁的没有。4(1993): 561-577。

[3]戴维斯,J.和M.高德里奇。“精确-召回率与ROC曲线之间的关系”ICML ' 06会议记录, 2006,第233-240页。

[4]莫斯科维茨,c.s.和m.s.佩佩。量化和比较二元结局的连续预后因素的预测准确性。生物统计学5,不。1(2004): 113-27。

[5]黄,Y., M. S. Pepe,和Z. Feng。"评估连续标记的可预测性"华盛顿大学生物统计学论文系列, 2006, 250-61。

[6]布里格斯,W. M.和R.扎勒茨基。技能图:评价连续诊断测试的图形化技术生物识别技术64年,没有。1(2008): 250-256。

[7] Bettinger, R.“使用ROC凸包方法的代价敏感分类器选择”。SAS研究所,2003年。

另请参阅

||||

相关的话题