主要内容

perfcurve

接收机工作特性(ROC)曲线或分类器输出的其他性能曲线

描述

例子

[Xy] = perfcurve(标签分数Poscrass.返回Xy用于分类器预测矢量的ROC曲线的坐标,分数,给定真正的类标签,标签和正类标签,Poscrass..您可以使用以下命令来可视化性能曲线情节(X, Y)

[XyT.] = perfcurve(标签分数Poscrass.的计算值的分类器得分的阈值数组Xy

例子

[XyT.AUC] = perfcurve(标签分数Poscrass.的计算值在曲线下的面积Xy

例子

[XyT.AUCOPTROCPT] = perfcurve(标签分数Poscrass.返回ROC曲线的最佳操作点。

[XyT.AUCOPTROCPTSUBY] = perfcurve(标签分数Poscrass.返回y负子类的值。

例子

[XyT.AUCOPTROCPTSUBY子宫] = perfcurve(标签分数Poscrass.返回负类名称。

[___] = perfcurve(标签分数Poscrass.名称,价值从上一个语法返回ROC曲线的坐标和任何其他输出参数,其中一个或多个指定的其他选项名称,价值对参数。

例如,您可以提供负类列表,更改Xy标准,计算点置信界限使用交叉验证或引导程序,指定错误分类成本,或者并行计算置信界限。

例子

全部收缩

加载示例数据。

加载fisheriris

只使用前两个特性作为预测变量。仅使用与物种versicolor和Virginica对应的测量来定义二进制分类问题。

pred = meas(51:末端,1:2);

定义二进制响应变量。

resp =(1:100)'> 50;%versicolor = 0,virginica = 1

适合逻辑回归模型。

mdl = fitglm (pred职责,“分布”“二”“链接”'logit');

计算ROC曲线。使用Logistic回归模型的概率估计作为分数。

得分= mdl.fitted.probability;[x,y,t,auc] = perfcurve(物种(51:结束,:),得分,“virginica”);

perfcurve存储数组中的阈值T.

显示曲线下的面积。

AUC
AUC = 0.7918.

曲线下的区域为0.7918。最大AUC为1,其对应于完美的分类器。较大的AUC值表示更好的分类器性能。

绘制ROC曲线。

情节(X, Y)包含(的假阳性率) ylabel (“真阳性率”) 标题('通过Logistic回归分类的ROC'

加载示例数据。

加载电离层

X是一个351x34实值的预测矩阵。y是类标签的字符数组:“b”因为雷达信号不好'G'为了良好的雷达回报。

重新格式化响应以适应逻辑回归。使用预测变量3到34。

resp = strcmp (Y,“b”);%resp = 1,如果y ='b',或0如果y ='g'pred = X (: 34);

拟合逻辑回归模型来估计雷达返回差的后验概率。

mdl = fitglm (pred职责,“分布”“二”“链接”'logit');score_log = mdl.Fitted.Probability;%概率估计数

使用分数的概率计算标准的ROC曲线。

[Xlog, Ylog Tlog AUClog] = perfcurve(职责、score_log“真正的”);

在同一示例数据上列车SVM分类器。标准化数据。

mdlsvm = fitcsvm(pred,Resp,“标准化”,真正的);

计算后验概率(分数)。

mdlSVM = fitPosterior (mdlSVM);[~, score_svm] = resubPredict (mdlSVM);

第二列score_svm包含不良雷达返回的后验概率。

使用SVM模型的分数计算标准ROC曲线。

[Xsvm, Ysvm Tsvm AUCsvm] = perfcurve(职责,score_svm (:, mdlSVM.ClassNames),“真正的”);

适用于同一样本数据的野贝雷斯分类器。

mdlnb = fitcnb(pred,chab);

计算后验概率(分数)。

[〜,score_nb] = ResubPredict(MDLNB);

使用Naive Bayes分类的分数计算标准ROC曲线。

[Xnb, Ynb, Tnb AUCnb] = perfcurve(职责,score_nb (:, mdlNB.ClassNames),“真正的”);

在同一图表上绘制ROC曲线。

绘图(Xlog,Ylog)保持plot(xsvm,ysvm)图(xnb,ynb)图例(逻辑回归的“金宝app支持向量机”'天真的贝叶斯'“位置”'最好')包含(的假阳性率);ylabel (“真阳性率”);标题(用于Logistic回归、支持向量机和朴素贝叶斯分类的ROC曲线)举行离开

虽然SVM为更高的阈值产生了更好的ROC值,但Logistic回归通常更好地区分来自优质的雷达返回。天真贝叶斯的ROC曲线通常低于其他两个ROC曲线,这表明比其他两个分类方法更差。

比较所有三个分类器的曲线下面积。

AUClog
AUClog = 0.9659
Aucsvm.
AUCSVM = 0.9489
Aucnb.
AUCnb = 0.9393

Logistic回归具有最高的AUC措施,用于分类和幼稚贝叶斯最低。此结果表明,Logistic回归对该示例数据具有更好的样本平均性能。

此示例显示如何使用ROC曲线确定分类器中自定义内核函数的更好参数值。

在单位圆圈内生成一组随机的点。

RNG(1);%的再现性n = 100;%每象限点数r1 =√兰特(2 * n, 1));%随机半径t1 = [pi / 2 * rand(n,1);(PI / 2 * rand(n,1)+ pi)];Q1和Q3的%随机角度x1 = [r1。* cos(t1)r1。* sin(t1)];%北笛卡尔转换R2 = SQRT(RAND(2 * N,1));t2 = [pi / 2 * rand(n,1)+ pi / 2;(PI / 2 * rand(n,1)-pi / 2)];Q2和Q4的%随机角度x2 = [r2。* cos(t2)r2。* sin(t2)];

定义预测变量。第一个和第三象限的标签点属于正类,负数中的第二和第四象限中的标签点。

pred = [X1;X2);resp = 1 (4 * n, 1);rep (2*n + 1:end) = -1; / /结束% 标签

创建功能mysigmoid.m.,它在特征空间中接受两个矩阵作为输入,并使用Sigmoid内核将它们转换为克矩阵。

函数G = mysigmoid (U, V)s形核函数,斜率为gamma,截距为c伽玛= 1;c = -1;g = tanh(gamma * u * v'+ c);结尾

使用s形核函数训练SVM分类器。将数据标准化是一个很好的做法。

svmmodel1 = fitcsvm(pred,Resp,“KernelFunction”“mysigmoid”......“标准化”,真正的);SVMModel1 = fitPosterior (SVMModel1);[~, scores1] = resubPredict (SVMModel1);

伽玛= 0.5;之内mysigmoid.m.并另存为mysigmoid2.m..并且,使用调整后的Sigmoid内核列出SVM分类器。

函数g = mysigmoid2(u,v)s形核函数,斜率为gamma,截距为c伽玛= 0.5;c = -1;g = tanh(gamma * u * v'+ c);结尾
svmmodel2 = fitcsvm(pred,Resp,“KernelFunction”“mysigmoid2”......“标准化”,真正的);SVMModel2 = fitPosterior (SVMModel2);[~, scores2] = resubPredict (SVMModel2);

计算两种模型的ROC曲线和曲线下面积(AUC)。

[x1,y1,〜,auc1] = perfcurve(resp,scors1(:,2),1);[X2,Y2,〜,AUC2] = perfcurve(RESP,Scors2(:,2),1);

绘制ROC曲线。

情节(x1, y1)绘图(x2,y2)持有离开传奇('伽玛= 1'“γ= 0.5”“位置”'se');包含(的假阳性率);ylabel (“真阳性率”);标题(“ROC用于SVM分类”);

gamma参数设置为0.5的核函数给出了更好的样本内结果。

比较AUC措施。

AUC1 AUC2
AUC1 = 0.9518 AUC2 = 0.9985

gamma设置为0.5的曲线下面积比gamma设置为1的曲线下面积高。这也证实了gamma参数值为0.5会产生更好的结果。对于这两个gamma参数值的分类性能的视觉比较,请参见使用自定义核训练SVM分类器

加载示例数据。

加载fisheriris

栏载体,物种,包括三种不同种类的鸢尾花:setosa,versicolor,virginica。双矩阵由花上的四种测量值组成:萼片长度,萼片宽度,花瓣长度和花瓣宽度。所有测量单位都是厘米。

以萼片长度和宽度作为预测变量,训练分类树。指定类名是一个很好的实践。

型号= FITCTREE(MEAS(:,1:2),物种,......'classnames',{“setosa”“多色的”“virginica”});

基于树预测类的类标签和分数模型

[〜,得分] = ResubPredict(模型);

分数是一个观察(数据矩阵中的一行)属于一个类的后验概率。的列分数对应于指定的类'classnames'.因此,第一列对应于Setosa,第二列对应于versicolor,第三列对应于Virginica。

给定真实的类别标签,计算观测属于versicolor的预测的ROC曲线物种.还计算最佳操作点和y负子类的值。返回负类的名称。

因为这是一个多阶层的问题,你不能仅仅提供得分(:,2)作为输入perfcurve.这样做不会给perfcurve有关两个负类(Setosa和Virginica)的分数的足够信息。这个问题与二进制分类问题不同,在其中知道一个类的得分足以确定其他类的分数。因此,您必须提供perfcurve在两个负类的分数中的功能中的功能。一个这样的功能是 S. C O. R. E. 2 - 最大限度 S. C O. R. E. 1 S. C O. R. E. 3.

DiffScore =得分(:,2) -  Max(得分(:,1),得分(:,3));[x,y,t,〜,optrocpt,suby,subnames] = perfcurve(种类,差错,“多色的”);

X,默认情况下,是假阳性率(辐射或1特异性)和y,默认情况下,是真正的阳性率(召回或灵敏度)。正类标签是多色的.因为没有定义负类,perfcurve假设不属于正类的观察结果属于一类。函数接受它作为负类。

OPTROCPT
OPTROCPT =1×20.1000 - 0.8000
suby
Suby =12×200 0.1800 0.1800 0.4800 0.4800 0.5800 0.5800 0.6200 0.8000 0.8000 0.8800 0.8800 0.9200 0.9200 0.9200 0.9600 0.9600 0.9800 0.9800⋮
subnames
subnames =1x2细胞{'setosa'} {'virginica'}

绘制ROC曲线和ROC曲线上的最佳工作点。

情节(X, Y)Plot(Optrocpt(1),Optrocpt(2),“罗”)包含(的假阳性率) ylabel (“真阳性率”) 标题(“分类树分类的ROC曲线”)举行离开

找到对应于最佳操作点的阈值。

T((x == Optrocpt(1))&(y == Optrocpt(2))))
ans = 0.2857.

指定弗吉纳斯作为负类并计算和绘制ROC曲线多色的

再一次,你必须提供perfcurve在负类的分数中具有函数的功能。使用函数的示例是 S. C O. R. E. 2 - S. C O. R. E. 3.

Diffscore = score(:,2) - score(:,3);[X, Y, ~, ~, OPTROCPT] = perfcurve(物种,diffscore,“多色的”......'negclass'“virginica”);OPTROCPT
OPTROCPT =1×20.1800 - 0.8200
人物,情节(X, Y)Plot(Optrocpt(1),Optrocpt(2),“罗”)包含(的假阳性率) ylabel (“真阳性率”) 标题(“分类树分类的ROC曲线”)举行离开

加载示例数据。

加载fisheriris

列向量物种由三种不同物种的虹膜花组成:setosa,versicolor,virginica。双矩阵由花上的四种测量值组成:萼片长度,萼片宽度,花瓣长度和花瓣宽度。所有测量单位都是厘米。

只使用前两个特性作为预测变量。定义一个二元问题,只使用对应于花斑和弗吉尼亚物种的测量值。

pred = meas(51:末端,1:2);

定义二进制响应变量。

resp =(1:100)'> 50;%versicolor = 0,virginica = 1

适合逻辑回归模型。

mdl = fitglm (pred职责,“分布”“二”“链接”'logit');

通过垂直平均(VA)和bootstrap抽样计算真阳性率(TPR)的点态置信区间。

[X, Y, T] = perfcurve(物种(51:,:),mdl.Fitted.Probability,......“virginica”'nboot',1000,“XVals”,[0:0.05:1]);

'nboot',1000将引导副本的数量设置为1000。'xvals','全部'提示perfcurve返回Xy, 和T.所有分数的值,以及平均值y值(真正的阳性率)根本X值(假阳性率)使用垂直平均。如果您未指定xvals.,然后perfcurve默认使用阈值计算置信度界限。

绘制点态置信区间。

errorbar (X, Y (: 1), Y (: 1) - Y (:, 2), Y (:, 3) - Y (: 1));xlim ([-0.02, 1.02]);ylim ([-0.02, 1.02]);包含(的假阳性率) ylabel (“真阳性率”) 标题(“具有点态置信界限的ROC曲线”) 传奇('pcbwva'“位置”'最好'

可能并不总是能够控制假阳性率(FPR, theX在这个例子中的价值)。因此,您可能希望通过阈值平均来计算真正的阳性率(TPR)上的点置信区间。

[x1,y1,t1] = perfcurve(物种(51:结束,:),mdl.fitted.probability,......“virginica”'nboot',1000);

如果你设置了'tvals''全部',或者您没有指定'tvals''xvals',然后perfcurve回报Xy, 和T.的值,并计算逐点置信边界Xy使用阈值平均。

绘制置信度界限。

图()errorbar (X1 (: 1), Y1(: 1),日元(:1)日元(:,2),日元(:,3)日元(:1));xlim ([-0.02, 1.02]);ylim ([-0.02, 1.02]);包含(的假阳性率) ylabel (“真阳性率”) 标题(“具有点态置信界限的ROC曲线”) 传奇('pcbwta'“位置”'最好'

指定要固定的阈值并计算ROC曲线。然后画出曲线。

[x1,y1,t1] = perfcurve(物种(51:结束,:),mdl.fitted.probability,......“virginica”'nboot',1000,'tvals', 0:0.05:1);图()errorbar (X1 (: 1), Y1(: 1),日元(:1)日元(:,2),日元(:,3)日元(:1));xlim ([-0.02, 1.02]);ylim ([-0.02, 1.02]);包含(的假阳性率) ylabel (“真阳性率”) 标题(“具有点态置信界限的ROC曲线”) 传奇('pcbwta'“位置”'最好'

输入参数

全部收缩

真正的类标签,指定为数字向量、逻辑向量、字符矩阵、字符串数组、字符向量的单元格数组或类别数组。有关更多信息,请参见分组变量

例子:{'hi','mid','hi','low',......,'mid'}

例子:[' H ', ' M ', ' H ', ' L ',…,“M”)

数据类型:|双倍的|逻辑|字符|细绳|细胞|分类

分类器返回的分数用于某些示例数据,指定为浮点向量。分数必须具有相同数量的元素标签

数据类型:|双倍的

正类标签,指定为数字标量,逻辑标量,字符向量,字符串标量,包含字符向量的单元格或分类标量。正类必须是输入标签的成员。的价值Poscrass.您可以指定取决于值标签

标签价值 Poscrass.价值
数字矢量 数字标量
逻辑矢量 逻辑标量
字符矩阵 字符向量
字符串数组 字符串标量
字符向量的单元格数组 含有字符向量的字符载体或细胞
分类向量 绝对标量

例如,在癌症诊断问题中,如果恶性肿瘤是正类,则指定Poscrass.作为“恶性”

数据类型:|双倍的|逻辑|字符|细绳|细胞|分类

名称-值对的观点

指定可选的逗号分离对名称,价值论点。的名字是参数名称和价值为对应值。的名字必须出现在引号内。您可以以任何顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:'namclass','versicolor','xcrit','fn','nboot',1000,'boottype','per'指定物种Versicolor作为否定类,X坐标作为假阴性的标准,引导样本的数量为1000.它还指定使用百分位方法计算点置信界限。

作为逗号分隔对指定的负类列表“NegClass”和数字阵列,分类阵列,字符串数组或字符向量的单元数组数组。默认情况下,perfcurve负面的'全部'并将标签输入数组中的所有非正数类视为负数。

如果负面的是标签阵列中找到的类的子集,然后perfcurve丢弃标签不属于正类或负类的实例。

例子:NegClass,{“癣”、“setosa”}

数据类型:|双倍的|分类|字符|细绳|细胞

计算的标准X,指定为逗号分隔的配对组成'xcrit'以及以下之一。

标准 描述
tp 真正的实例数量
FN. 假否定实例的数量。
FP. 误报的数量。
tn 真正的否定实例数。
TP + FP. 真正的积极和假实例的总和。
齿槽 积极预测的速度。
RPP =(TP + FP)/(TP + Fn + FP + Tn)
rnp 消极预测率。
rnp = (tn + fn) / (tp + fn + fp + tn)
范围 准确性。
ACCU =(TP + TN)/(TP + FN + FP + TN)
tpr,或sens,或reca 真正的阳性率,或敏感性或召回。
Tpr = sens = reca = tp/(tp+fn)
FNR.,或错过 假负率,或错过。
FNR = miss = fn/(tp+fn)
FPR.,或落下 假阳性率,或辐射,或1特异性。
FPR = fall = fp/(tn+fp)
tnr,或规格 真阴性率,或特异性。
TNR = spec = tn/(tn+fp)
PPV,或前的 阳性预测值或精确度。
ppv = prec = tp /(tp + fp)
NPV. 否定预测值。
npv = tn /(tn + fn)
怪诞 预期成本。
Ecost =(tp *成本(p | p)+ fn *成本(n | p)+ fp *成本(p | n)+ tn *成本(n | n))/(tp + fn + fp + tn)
自定义标准 具有输入参数的自定义函数(c,规模,成本), 在哪里C是一个2 × 2矩阵,规模是一个2×1级别的级别尺度和成本是一个2 × 2的误分类代价矩阵。

警告

其中一些标准返回两个特殊阈值之一的值,拒绝所有的'全都接受'

例子:“XCrit”、“ecost”

计算的标准y,指定为逗号分隔的配对组成'ycrit'以及与其相同的标准选择X.该标准不一定是正类分数的单调函数。

例子:'ycrit','Ecost'

价值的X条件,指定为逗号分隔的对,由“XVals”和一个数字数组。

  • 如果您指定xvals.,然后perfcurve计算Xy点置信界限为了y(适用时)仅适用于指定的xvals.

  • 如果您未指定xvals.,然后perfcurve,计算Xy默认情况下所有分数的值。

请注意

你不能设置xvals.TVALS同时。

例子:“XVals”,[0:0.05:1]

数据类型:|双倍的|字符|细绳

正类分数的阈值,指定为逗号分隔对组成'tvals'和任何一种'全部'或者一个数字数组。

  • 如果TVALS被设置为'全部'或未指定,和xvals.没有指定,那么perfcurve回报Xy, 和T.所有分数和计算的值点置信界限为了Xy使用阈值平均。

  • 如果TVALS然后设置为数字数组,然后perfcurve回报Xy, 和T.指定阈值的值并计算尖端的置信范围Xy在这些阈值上使用阈值平均。

请注意

你不能设置xvals.TVALS同时。

例子:'tvals',[0:0.05:1]

数据类型:|双倍的|字符|细绳

指示符使用数据中最接近的值而不是指定的数字xvals.TVALS,指定为逗号分隔的配对组成'UseneAleSt'和任何一种'在''离开'

  • 如果您指定数字xvals.并设置UseNearest'在',然后perfcurve返回最近的独特X的值,并返回相应的值yT.

  • 如果您指定数字xvals.并设置UseNearest'离开',然后perfcurve返回排序xvals.

  • 如果通过交叉验证或引导来计算置信界限,则始终是此参数'离开'

例子:'UseneAleSt','Off'

perfcurve方法进行处理分数,指定为逗号分隔对“ProcessNaN”“忽略”“addtofalse”

  • 如果ProcessNaN“忽略”,然后perfcurve删除的观察与来自数据的分数。

  • 如果ProcessNaN“addtofalse”,然后perfcurve添加实例分数到错误分类计数在各自的类。也就是说,perfcurve总是将阳性类的实例计数为假阴性(FN),并且总是将阴性类的实例计数为假阳性(FP)。

例子:'processnan','addtofalse'

正面和负类的现有概率,指定为逗号分隔的配对组成'事先的''经验''制服'或有两个元素的数组。

如果之前'经验',然后perfcurve从类频率中源的概率。

如果之前'制服',然后perfcurve设置所有先验概率相等。

例子:“之前”,[0.3,0.7]

数据类型:|双倍的|字符|细绳

误分类代价,指定为逗号分隔对组成“成本”和一个2×2矩阵,包含[成本(p | p),成本(n | p);成本(p | n),成本(n | n)]

成本(n | p)是将积极班级作为负类错误分类的成本。成本(P | N)是将负类作为正班的费用。通常,成本(p | p)= 0和成本(n | n)= 0,但perfcurve允许您为正确的分类指定非零成本。

例子:'成本',[0 0.7; 0.3 0]

数据类型:|双倍的

置信度界限的重要性水平,指定为逗号分隔的对“α”和0到1范围内的标量值。perfcurve计算100 *(1 -α百分比)点置信界限为了XyT., 和AUC置信水平为1 -α

例子:“阿尔法”,0.01指定99%的置信界限

数据类型:|双倍的

观察权值,指定为逗号分隔的对,由“重量”和一个非负标量值的向量。这个向量必须有和分数标签做。

如果分数标签在细胞阵列中,您需要提供重量,权重也必须是单元阵列。在这种情况下,每个元素重量必须是一个数字向量,其元素个数与相应元素相同分数.例如,元素个数(重量{1})= =元素个数(分数{1})

什么时候perfcurve计算XyT.或者使用交叉验证的置信界限,它使用这些观察权重而不是观察计数。

什么时候perfcurve使用bootstrap计算置信度,它抽样N在......之外N观察与替换,使用这些权重作为多项抽样概率。

默认值是1S或单元数组的向量,其中每个元素是1s的向量。

数据类型:|双倍的|细胞

用于计算置信边界的引导副本的数量,指定为由以下组成的逗号分隔对'nboot'和一个正整数。默认值0表示未计算置信界限。

如果标签分数是单元阵列,此参数必须为0,因为perfcurve可以使用交叉验证或引导来计算置信范围。

例子:“NBoot”,500年

数据类型:|双倍的

置信区间类型Bootci.用于计算置信范围,指定为逗号分隔对,由“BootType”和以下之一:

  • 'BCA'- 偏见校正和加速百分位方法

  • 的规范“正常”-带引导偏差和标准误差的正常近似区间

  • '每''百分位数'- 百分位方法

  • “cpe”'纠正百分位数'- 偏置校正百分位方法

  • '螺柱''学生'-学习置信区间

例子:'boottype','cper'

的可选输入参数Bootci.计算置信度界限,指定为分开的配对组成“BootArg”{'nbootstd',nbootstd}{'stderr',stderr},名称 - 值对参数Bootci.

当您计算学生化的引导信心间隔时(“BootType”'学生'),您可以另外指定'nbootstd''stderr',名称 - 值对参数Bootci., 通过使用“BootArg”

  • 'bootarg',{'nbootstd',nbootstd}使用Bootstrap估算Bootstrap统计信息的标准错误nbootstd.数据样本。nbootstd.是一个正整数,其默认值为100。

  • BootArg, {Stderr, Stderr}通过用户定义的函数评估引导统计数据的标准错误stderr这需要[1:数量(得分)]'作为输入参数。stderr是函数句柄。

例子:'bootarg',{'nbootstd',nbootstd}

数据类型:细胞

用于控制置信区间计算的选项,置信区间指定为逗号分隔对,由'选项'和返回的结构阵列实例化.这些选项需要并行计算工具箱™。perfcurve使用此参数仅计算点击尖端界限。要计算这些界限,必须传递单元格数组标签分数或集合NBoot到一个正整数。

此表总结了可用选项。

选项 描述
“UseParallel”
  • 错误的—串行计算(默认)。

  • 真正的——并行计算。您需要“并行计算工具箱”才能使用此选项。

'userubstreams'
  • 错误的- 请勿为每次迭代(默认)使用单独的子流。

  • 真正的- 使用单独的子流进行每个迭代以以可重复的方式平行计算。计算可重复的,设置允许子流的类型:“mlfg6331_64”'MRG32K3A'

'溪流'

一种randstream.对象,或此类对象的单元格数组。如果您指定,使用单个对象,除非:

  • 使用指α.真正的

  • Userumstreams.错误的

在这种情况下,使用与并行池相同大小的小区阵列。如果并行池未打开,那么必须提供单个随机数流。

如果“UseParallel”真正的'userubstreams'错误的,然后是长度'溪流'必须等于使用的工人数量perfcurve.如果并行池已经打开,则'溪流'是并行池的大小。如果一个并行池还没有打开,那么MATLAB®根据您的安装和偏好,可能会为您打开游泳池。为确保更可预测的结果,使用parpool.(并行计算工具箱)并在调用之前显式创建并行池perfcurve和设置'选项',statset('deverypallellel',true)

例子:'选项',statset('deverypallellel',true)

数据类型:塑造

输出参数

全部收缩

X- 用于性能曲线,作为向量或向量返回m3矩阵。默认情况下,X值为假阳性率、FPR(放射性沉降或1 -特异性)。改变X, 使用XCrit名称值对参数。

  • 如果perfcurve没有计算点置信界限,或者如果它使用垂直平均计算它们,那么X是矢量。

  • 如果perfcurve然后使用阈值平均计算置信边界X是一个m3矩阵,m固定阈值的个数。第一列X包含平均值。第二和第三列包含点绑定的下界和上限的点置信界限。

y- 用于性能曲线,作为向量或向量返回m3矩阵。默认情况下,y值是真正的阳性率,TPR(召回或灵敏度)。改变y,使用ycrit.名称值对参数。

  • 如果perfcurve没有计算点置信界限,然后y是矢量。

  • 如果perfcurve那么计算置信度界限y是一个m3矩阵,m是固定的数量X值或阈值(T.值)。第一列y包含平均值。第二和第三列包含点绑定的下界和上限的点置信界限。

计算值的分类器分数的阈值Xy,返回矢量或m3矩阵。

  • 如果perfcurve没有计算点置信界限,或使用阈值平均计算它们T.是矢量。

  • 如果perfcurve使用垂直平均计算置信界限,T.是一个m3矩阵,m是固定的数量X值。第一列T.包含平均值。第二列和第三列分别包含点态置信界的下界和上界。

对于每个门槛,TP.分数大于或等于这个阈值的真实积极观察的计数,和FP.是具有大于或等于该阈值的分数的假阳性观测的计数。perfcurve定义负数,TN.FN.,以类似的方式。然后该函数以降序顺序对对应于正数的升序进行排序。

为了m在分数阵列中发现的明显阈值,perfcurve返回XyT.阵列与m+ 1行。perfcurve集元素T (2:m+1)到不同的阈值t(1)重复T (2).按照惯例,t(1)代表最高的拒绝所有的门槛,且perfcurve计算对应的值Xy为了TP = 0.FP = 0..这趋向)价值是最低的'全都接受'阈值TN = 0fn = 0.

曲线下的区域(AUC的计算值Xy,作为标量值或3×1向量返回。

  • 如果perfcurve没有计算点置信界限AUC是标量值。

  • 如果perfcurve使用垂直平均计算置信界限,AUC是一个3 × 1的向量。第一列AUC包含平均值。第二列和第三列分别包含置信界的下界和上界。

对于完美的分类器,AUC = 1。对于随机分配观察到的类的分类器,AUC = 0.5。

如果你设置了xvals.'全部'(默认)perfcurve计算AUC使用返回的Xy值。

如果xvals.那是一个数字数组,然后perfcurve计算AUC使用Xy间隔中的所有不同分数的值,这些分数由最小和最大的元素指定xvals..更准确地说,perfcurve发现X所有不同阈值的值xvals.被设置为'全部',然后使用其中的一个子集(与相应的y价值观之间分钟(XVals)马克斯(XVals)计算AUC

perfcurve使用梯形近似来估计该区域。如果是第一个或最后一个值Xy那么perfcurve删除它们以允许计算AUC.这照顾了产生的标准特别的是特别的拒绝所有的'全都接受'阈值,例如阳性预测值(PPV)或负预测值(NPV)。

ROC曲线的最佳操作点,作为一个1×2阵列,具有假阳性率(FPR)和最佳ROC操作点的真正阳性率(TPR)值。

perfcurve计算OPTROCPT仅限标准ROC曲线,并设置为否则。获得ROC曲线的最佳操作点,perfcurve首先求斜率,S., 使用

S. = 成本 P. | N 成本 N | N 成本 N | P. 成本 P. | P. * N P.

  • 成本(N|P.是将正类误分类为负类的代价。成本(P.|N)是将负类作为正级别错误分类的成本。

  • p = tp + fnN = tn + fp.它们分别是正类和负类中的实例总数。

perfcurve然后通过直线带斜率的运动找到最优工作点S.从ROC图的左上角(玻璃钢= 0TPR = 1)向下和向右,直到与ROC曲线相交。

作为数组返回的负子类的值。

  • 如果你只指定一个负类,那么SUBY是一样y

  • 如果您指定K.负类,然后SUBY矩阵的大小是多少m——- - - - - -K., 在哪里m是返回值的数量Xy, 和K.为负类的数量。perfcurve计算y通过求解所有负类来求解值。

SUBY给出价值y每个负数类别的标准分别。对于每个负类,perfcurve放入新列SUBY把它填满y真正的负(TN)和假阳性(FP)的值仅为此类计算。

否定类名称,作为单元格数组返回。

  • 如果您提供的负类名称数组,负面的,然后perfcurve将名称复制到子宫

  • 如果你不提供负面的,然后perfcurve提取物子宫从输入标签。的顺序子宫和列的顺序一样吗SUBY.也就是说,Suby(:,1)是负类SUBYNAMES {1}Suby(:,2)是负类子宫{2}, 等等。

算法

全部收缩

点置信界限

如果您提供单元格阵列标签分数,或者如果你设置NBoot到一个正整数,然后perfcurve的点向置信范围XyT., 和AUC.您无法提供单元格阵列标签分数并设置NBoot同时变成一个正整数。

perfcurve使用交叉验证或Bootstrap来计算数据以计算置信范围。

  • 交叉验证 - 如果您提供单元格阵列标签分数,然后perfcurve使用交叉验证并将单元格阵列中的元素视为交叉验证折叠。标签可以是数字向量、逻辑向量、字符矩阵、字符向量或类别向量的单元数组。所有的元素在标签必须具有相同类型。分数可以是数字向量的单元格阵列。单元格阵列标签分数必须具有相同数量的元素。细胞中标签的数量j标签必须等于单元格中的分数数j分数对于任何j在1到元素个数的范围内分数

  • 引导-如果你设置NBoot到一个正整数Nperfcurve生成N引导副本来计算点态置信界限。如果你使用XCritycrit.设置标准Xy匿名功能,perfcurve只能使用引导来计算置信界限。

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

  • 垂直平均(VA) -perfcurve估计置信限yT.固定值X.也就是说,perfcurve取固定的ROC曲线样本X值,取相应的平均值yT.值,并计算标准误差。你可以使用xvals.名称-值对参数来修复X计算置信界限的值。如果您未指定xvals.,然后perfcurve计算束缚界限X值。

  • 阈值平均(ta) -perfcurve固定阈值采集ROC曲线样本T.对于积极的班级分数,取相应的平均值Xy值,并估计置信度界限。你可以使用TVALS名称值对参数用于使用此方法来计算置信界限。如果你设置了TVALS'全部'或者不具体说明TVALSxvals.,然后perfcurve回报Xy, 和T.的值,并计算逐点置信边界yX使用阈值平均。

当你计算置信限时,y是一个m-By-3阵列,在哪里m是固定的数量X值或阈值(T.值)。第一列y包含平均值。第二和第三列包含点绑定的下界和上限的点置信界限。AUC是与同一惯例相同的三个元素的行矢量。如果perfcurve然后使用VA计算置信界限T.是一个m3矩阵,X是一列栏矢量。如果perfcurve使用助教,然后X是一个m-By-3矩阵和T.是一个列矢量。

perfcurve返回点置信界限。它不会返回整个曲线的同时置信带。

参考

[1] T. Fawcett。“ROC图表:研究人员的注释和实践考虑”,2004年。

[2] Zweig,M.和G. Campbell。“接收器 - 操作特征(ROC)地块:临床医学中的基本评价工具。”临床。Chem..1993年,39/4,pp。561-577。

[3]戴维斯,J.和M. Goadrich。“精密召回与ROC曲线之间的关系。”ICML '06的诉讼程序,2006年,第233-240页。

莫斯科维茨和佩佩。“量化和比较连续预后因素对二元预后的预测准确性。”生物统计学,2004,5,pp。113-127。

黄勇,M. Pepe,冯志峰。"评估连续标记的预测性"美国华盛顿生物统计纸系列, 2006, 250 - 261。

[6] Briggs,W.和R. Zaretzki。“技能图:一种评估连续诊断测试的图解技术。”生物识别学,2008,63,pp。250 - 261。

[7] r. bettinger。“使用ROC Convex Hull方法选择的成本敏感分类器选择。”SAS研究所

扩展能力

在R2009A介绍