Кривая рабочей характеристики получателя (ROC) или другая кривая производительности для классификатора выводятся
[___] = perfcurve(
возвращает координаты кривой ROC и любого другого выходного аргумента от предыдущих синтаксисов, с дополнительными опциями, заданными одним или несколькими labels
,scores
,posclass
,Name,Value
)Name,Value
парные аргументы.
Например, можно предоставить список отрицательных классов, изменить X
или Y
критерий, вычислите pointwise доверительные границы с помощью перекрестной проверки или начальной загрузки, задайте стоимость misclassification или вычислите доверительные границы параллельно.
Загрузите выборочные данные.
load fisheriris
Используйте только первые две функции как переменные предикторы. Опишите бинарную задачу классификации только при помощи измерений, которые соответствуют разновидностям versicolor и virginica.
pred = meas(51:end,1:2);
Задайте бинарную переменную отклика.
resp = (1:100)'>50; % Versicolor = 0, virginica = 1
Подбирайте модель логистической регрессии.
mdl = fitglm(pred,resp,'Distribution','binomial','Link','logit');
Вычислите кривую ROC. Используйте оценки вероятности из модели логистической регрессии как баллы.
scores = mdl.Fitted.Probability;
[X,Y,T,AUC] = perfcurve(species(51:end,:),scores,'virginica');
perfcurve
хранит пороговые значения в массиве T
.
Отобразите область под кривой.
AUC
AUC = 0.7918
Область под кривой 0.7918. Максимальный AUC равняется 1, который соответствует совершенному классификатору. Большие значения AUC указывают на лучшую производительность классификатора.
Постройте кривую ROC.
plot(X,Y) xlabel('False positive rate') ylabel('True positive rate') title('ROC for Classification by Logistic Regression')
Загрузите выборочные данные.
load ionosphere
X
351x34 матрица с действительным знаком предикторов. Y
символьный массив меток класса: 'b'
поскольку плохой радар возвращается и 'g'
поскольку хороший радар возвращается.
Переформатируйте ответ, чтобы соответствовать логистической регрессии. Используйте переменные предикторы 3 - 34.
resp = strcmp(Y,'b'); % resp = 1, if Y = 'b', or 0 if Y = 'g' pred = X(:,3:34);
Подбирайте модель логистической регрессии, чтобы оценить, что апостериорные вероятности для радара возвращаются, чтобы быть плохой.
mdl = fitglm(pred,resp,'Distribution','binomial','Link','logit'); score_log = mdl.Fitted.Probability; % Probability estimates
Вычислите стандартную кривую ROC с помощью вероятностей в баллах.
[Xlog,Ylog,Tlog,AUClog] = perfcurve(resp,score_log,'true');
Обучите классификатор SVM на тех же выборочных данных. Стандартизируйте данные.
mdlSVM = fitcsvm(pred,resp,'Standardize',true);
Вычислите апостериорные вероятности (баллы).
mdlSVM = fitPosterior(mdlSVM); [~,score_svm] = resubPredict(mdlSVM);
Второй столбец score_svm
содержит апостериорные вероятности плохого радара, возвращается.
Вычислите стандартную кривую ROC с помощью баллов из модели SVM.
[Xsvm,Ysvm,Tsvm,AUCsvm] = perfcurve(resp,score_svm(:,mdlSVM.ClassNames),'true');
Соответствуйте наивному классификатору Байеса на тех же выборочных данных.
mdlNB = fitcnb(pred,resp);
Вычислите апостериорные вероятности (баллы).
[~,score_nb] = resubPredict(mdlNB);
Вычислите стандартную кривую ROC с помощью баллов от наивной классификации Бейеса.
[Xnb,Ynb,Tnb,AUCnb] = perfcurve(resp,score_nb(:,mdlNB.ClassNames),'true');
Постройте кривые ROC на том же графике.
plot(Xlog,Ylog) hold on plot(Xsvm,Ysvm) plot(Xnb,Ynb) legend('Logistic Regression','Support Vector Machines','Naive Bayes','Location','Best') xlabel('False positive rate'); ylabel('True positive rate'); title('ROC Curves for Logistic Regression, SVM, and Naive Bayes Classification') hold off
Несмотря на то, что SVM производит лучшие значения ROC для более высоких порогов, логистическая регрессия обычно лучше в различении плохого радара, возвращается из хороших единиц. Кривая ROC для наивного Бейеса обычно ниже, чем другие две кривые ROC, который указывает на худшую производительность в выборке, чем другие два метода классификатора.
Сравните область под кривой для всех трех классификаторов.
AUClog
AUClog = 0.9659
AUCsvm
AUCsvm = 0.9488
AUCnb
AUCnb = 0.9393
Логистическая регрессия имеет самую высокую меру по AUC для классификации, и у наивного Бейеса есть самое низкое. Этот результат предполагает, что логистическая регрессия имеет лучшую среднюю производительность в выборке для этих выборочных данных.
В этом примере показано, как решить, что лучшее значение параметров для пользовательского ядра функционирует в классификаторе с помощью кривых ROC.
Сгенерируйте случайный набор точек в модульном кругу.
rng(1); % For reproducibility n = 100; % Number of points per quadrant r1 = sqrt(rand(2*n,1)); % Random radii t1 = [pi/2*rand(n,1); (pi/2*rand(n,1)+pi)]; % Random angles for Q1 and Q3 X1 = [r1.*cos(t1) r1.*sin(t1)]; % Polar-to-Cartesian conversion r2 = sqrt(rand(2*n,1)); t2 = [pi/2*rand(n,1)+pi/2; (pi/2*rand(n,1)-pi/2)]; % Random angles for Q2 and Q4 X2 = [r2.*cos(t2) r2.*sin(t2)];
Задайте переменные предикторы. Пометьте точки в первых и третьих квадрантах как принадлежащий положительному классу и тем во вторых и четвертых квадрантах в отрицательном классе.
pred = [X1; X2];
resp = ones(4*n,1);
resp(2*n + 1:end) = -1; % Labels
Создайте функциональный mysigmoid.m
, который принимает две матрицы в пространстве признаков как входные параметры и преобразовывает их в матрицу Грамма использование сигмоидального ядра.
function G = mysigmoid(U,V) % Sigmoid kernel function with slope gamma and intercept c gamma = 1; c = -1; G = tanh(gamma*U*V' + c); end
Обучите классификатор SVM с помощью сигмоидальной функции ядра. Это - хорошая практика, чтобы стандартизировать данные.
SVMModel1 = fitcsvm(pred,resp,'KernelFunction','mysigmoid',... 'Standardize',true); SVMModel1 = fitPosterior(SVMModel1); [~,scores1] = resubPredict(SVMModel1);
Установите gamma = 0.5
; в mysigmoid.m
и сохраните как mysigmoid2.m
. И, обучите классификатор SVM с помощью настроенного сигмоидального ядра.
function G = mysigmoid2(U,V) % Sigmoid kernel function with slope gamma and intercept c gamma = 0.5; c = -1; G = tanh(gamma*U*V' + c); end
SVMModel2 = fitcsvm(pred,resp,'KernelFunction','mysigmoid2',... 'Standardize',true); SVMModel2 = fitPosterior(SVMModel2); [~,scores2] = resubPredict(SVMModel2);
Вычислите кривые ROC и область под кривой (AUC) для обеих моделей.
[x1,y1,~,auc1] = perfcurve(resp,scores1(:,2),1); [x2,y2,~,auc2] = perfcurve(resp,scores2(:,2),1);
Постройте кривые ROC.
plot(x1,y1) hold on plot(x2,y2) hold off legend('gamma = 1','gamma = 0.5','Location','SE'); xlabel('False positive rate'); ylabel('True positive rate'); title('ROC for classification by SVM');
Функция ядра с гамма набором параметра к 0,5 дает лучшие результаты в выборке.
Сравните меры по AUC.
auc1 auc2
auc1 = 0.9518 auc2 = 0.9985
Область под кривой для гамма набора к 0,5 выше, чем это для гамма набора к 1. Это также подтверждает, что гамма значение параметров 0,5 приводит к лучшим результатам. Для визуального сравнения производительности классификации с этими двумя гамма значениями параметров смотрите, Обучают Классификатор SVM Используя Пользовательское Ядро.
Загрузите выборочные данные.
load fisheriris
Вектор-столбец, species
, состоит из ирисовых цветов трех различных разновидностей: setosa, versicolor, virginica. Двойной матричный meas
состоит из четырех типов измерений на цветах: длина чашелистика, ширина чашелистика, лепестковая длина и лепестковая ширина. Все меры находятся в сантиметрах.
Обучите дерево классификации использование длины чашелистика и ширины как переменные предикторы. Это - хорошая практика, чтобы задать имена классов.
Model = fitctree(meas(:,1:2),species, ... 'ClassNames',{'setosa','versicolor','virginica'});
Предскажите метки класса и музыку к разновидностям на основе древовидного Model
.
[~,score] = resubPredict(Model);
Баллы являются апостериорными вероятностями, что наблюдение (строка в матрице данных) принадлежит классу. Столбцы score
соответствуйте классам, заданным 'ClassNames'
. Так, первый столбец соответствует setosa, второе соответствует versicolor, и третий столбец соответствует virginica.
Вычислите кривую ROC для предсказаний, что наблюдение принадлежит versicolor, учитывая истинный класс маркирует species
. Также вычислите оптимальную рабочую точку и y значения для отрицательных подклассов. Возвратите имена отрицательных классов.
Поскольку это - проблема мультикласса, вы не можете просто предоставить score(:,2)
как введено к perfcurve
. Выполнение так не дало бы perfcurve
достаточно информации о музыке к двум отрицательным классам (setosa и virginica). Эта проблема непохожа на бинарную проблему классификации, где знания множества одного класса достаточно, чтобы определить множество другого класса. Поэтому необходимо предоставить perfcurve
с функцией, которая включает множество двух отрицательных классов. Одна такая функция .
diffscore = score(:,2) - max(score(:,1),score(:,3));
[X,Y,T,~,OPTROCPT,suby,subnames] = perfcurve(species,diffscore,'versicolor');
X
, по умолчанию, ложный положительный уровень (осадки или 1 специфика) и Y
, по умолчанию, истинный положительный уровень (отзыв или чувствительность). Положительной меткой класса является versicolor
. Поскольку отрицательный класс не задан, perfcurve
принимает, что наблюдения, которые не принадлежат положительному классу, находятся в одном классе. Функция принимает его как отрицательный класс.
OPTROCPT
OPTROCPT = 1×2
0.1000 0.8000
suby
suby = 12×2
0 0
0.1800 0.1800
0.4800 0.4800
0.5800 0.5800
0.6200 0.6200
0.8000 0.8000
0.8800 0.8800
0.9200 0.9200
0.9600 0.9600
0.9800 0.9800
⋮
subnames
subnames = 1x2 cell
{'setosa'} {'virginica'}
Постройте кривую ROC и оптимальную рабочую точку на кривой ROC.
plot(X,Y) hold on plot(OPTROCPT(1),OPTROCPT(2),'ro') xlabel('False positive rate') ylabel('True positive rate') title('ROC Curve for Classification by Classification Trees') hold off
Найдите порог, который соответствует оптимальной рабочей точке.
T((X==OPTROCPT(1))&(Y==OPTROCPT(2)))
ans = 0.2857
Задайте virginica
как отрицательный класс и вычисляют и строят кривую ROC для versicolor
.
Снова, необходимо предоставить perfcurve
с функцией, которая включает множество отрицательного класса. Пример функции, чтобы использовать .
diffscore = score(:,2) - score(:,3); [X,Y,~,~,OPTROCPT] = perfcurve(species,diffscore,'versicolor', ... 'negClass','virginica'); OPTROCPT
OPTROCPT = 1×2
0.1800 0.8200
figure, plot(X,Y) hold on plot(OPTROCPT(1),OPTROCPT(2),'ro') xlabel('False positive rate') ylabel('True positive rate') title('ROC Curve for Classification by Classification Trees') hold off
Загрузите выборочные данные.
load fisheriris
Вектор-столбец species
состоит из ирисовых цветов трех различных разновидностей: setosa, versicolor, virginica. Двойной матричный meas
состоит из четырех типов измерений на цветах: длина чашелистика, ширина чашелистика, лепестковая длина и лепестковая ширина. Все меры находятся в сантиметрах.
Используйте только первые две функции как переменные предикторы. Опишите бинарную задачу только при помощи измерений, которые соответствуют versicolor и virginica разновидностям.
pred = meas(51:end,1:2);
Задайте бинарную переменную отклика.
resp = (1:100)'>50; % Versicolor = 0, virginica = 1
Подбирайте модель логистической регрессии.
mdl = fitglm(pred,resp,'Distribution','binomial','Link','logit');
Вычислите pointwise доверительные интервалы на истинном положительном уровне (TPR) вертикальным усреднением (VA) и производящий использующий начальную загрузку.
[X,Y,T] = perfcurve(species(51:end,:),mdl.Fitted.Probability,... 'virginica','NBoot',1000,'XVals',[0:0.05:1]);
'NBoot',1000
определяет номер копий начальной загрузки к 1 000. 'XVals','All'
подсказки perfcurve
возвратить X
Y
, и T
значения для всех баллов и среднее значение Y
значения (истинный положительный уровень) во всем X
значения (ложный положительный уровень) использование вертикального усреднения. Если вы не задаете XVals
, затем perfcurve
вычисляет доверительные границы с помощью порога, составляющего в среднем по умолчанию.
Постройте pointwise доверительные интервалы.
errorbar(X,Y(:,1),Y(:,1)-Y(:,2),Y(:,3)-Y(:,1)); xlim([-0.02,1.02]); ylim([-0.02,1.02]); xlabel('False positive rate') ylabel('True positive rate') title('ROC Curve with Pointwise Confidence Bounds') legend('PCBwVA','Location','Best')
Не может всегда быть возможно управлять ложным положительным уровнем (FPR, X
значение в этом примере). Таким образом, вы можете хотеть вычислить pointwise доверительные интервалы на истинных положительных уровнях (TPR) пороговым усреднением.
[X1,Y1,T1] = perfcurve(species(51:end,:),mdl.Fitted.Probability,... 'virginica','NBoot',1000);
Если вы устанавливаете 'TVals'
к 'All'
, или если вы не задаете 'TVals'
или 'Xvals'
, затем perfcurve
возвращает X
Y
, и T
значения для всех баллов и вычисляют pointwise доверительные границы для X
и Y
использование порогового усреднения.
Постройте доверительные границы.
figure() errorbar(X1(:,1),Y1(:,1),Y1(:,1)-Y1(:,2),Y1(:,3)-Y1(:,1)); xlim([-0.02,1.02]); ylim([-0.02,1.02]); xlabel('False positive rate') ylabel('True positive rate') title('ROC Curve with Pointwise Confidence Bounds') legend('PCBwTA','Location','Best')
Задайте пороговые значения, чтобы зафиксировать и вычислить кривую ROC. Затем постройте кривую.
[X1,Y1,T1] = perfcurve(species(51:end,:),mdl.Fitted.Probability,... 'virginica','NBoot',1000,'TVals',0:0.05:1); figure() errorbar(X1(:,1),Y1(:,1),Y1(:,1)-Y1(:,2),Y1(:,3)-Y1(:,1)); xlim([-0.02,1.02]); ylim([-0.02,1.02]); xlabel('False positive rate') ylabel('True positive rate') title('ROC Curve with Pointwise Confidence Bounds') legend('PCBwTA','Location','Best')
labels
— Истинные метки классаИстинный класс помечает в виде числового вектора, логического вектора, символьной матрицы, массива строк, массива ячеек из символьных векторов или категориального массива. Для получения дополнительной информации смотрите Сгруппированные переменные.
Пример: {'hi','mid','hi','low',...,'mid'}
Пример: ['H','M','H','L',...,'M']
Типы данных: single
| double
| logical
| char
| string
| cell
| categorical
scores
— Баллы возвращены классификаторомБаллы, возвращенные классификатором для некоторых выборочных данных в виде вектора плавающих точек. scores
должен иметь то же число элементов как labels
.
Типы данных: single
| double
posclass
— Положительная метка классаПоложительная метка класса в виде числового скаляра, логического скаляра, вектора символов, строкового скаляра, ячейка, содержащая вектор символов или категориальный скаляр. Положительный класс должен быть членом входных меток. Значение posclass
то, что можно задать, зависит от значения labels
.
labels значение | posclass значение |
---|---|
Числовой вектор | Числовой скаляр |
Логический вектор | Логический скаляр |
Символьная матрица | Символьный вектор |
Массив строк | Скаляр строки |
Массив ячеек из символьных векторов | Вектор символов или ячейка, содержащая вектор символов |
Категориальный вектор | Категориальный скаляр |
Например, в проблеме диагноза рака, если злокачественная опухоль является положительным классом, то задают posclass
как 'malignant'
.
Типы данных: single
| double
| logical
| char
| string
| cell
| categorical
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'NegClass','versicolor','XCrit','fn','NBoot',1000,'BootType','per'
задает разновидности versicolor как отрицательный класс, критерий X-координаты столь же ложное отрицание, количество выборок начальной загрузки как 1000. Это также указывает, что pointwise доверительные границы вычисляются с помощью метода процентили.'NegClass'
— Список отрицательных классов'all'
(значение по умолчанию) | числовой массив | категориальный массив | массив строк | массив ячеек из символьных векторовСписок отрицательных классов в виде разделенной запятой пары, состоящей из 'NegClass'
, и числовой массив, категориальный массив, массив строк или массив ячеек из символьных векторов. По умолчанию, perfcurve
наборы NegClass
к 'all'
и считает все неположительные классы найденными во входном массиве меток быть отрицательным.
Если NegClass
подмножество классов, найденных во входном массиве меток, затем perfcurve
отбрасывает экземпляры с метками, которые не принадлежат или положительным или отрицательным классам.
Пример: 'NegClass',{'versicolor','setosa'}
Типы данных: single
| double
| categorical
| char
| string
| cell
'XCrit'
— Критерий, чтобы вычислить для X
'fpr'
(значение по умолчанию) | 'fnr'
| 'tnr'
| 'ppv'
| 'ecost'
| ...Критерий, чтобы вычислить для X
В виде разделенной запятой пары, состоящей из 'XCrit'
и одно из следующих.
Критерий | Описание |
---|---|
tp | Количество истинных положительных экземпляров |
fn | Количество ложных отрицательных экземпляров. |
fp | Количество ложных положительных экземпляров. |
tn | Количество истинных отрицательных экземпляров. |
tp+fp | Сумма истинных положительных и ложных положительных экземпляров. |
rpp | Уровень положительных предсказаний.rpp = (tp+fp)/(tp+fn+fp+tn) |
rnp | Уровень отрицательных предсказаний. rnp = (tn+fn)/(tp+fn+fp+tn) |
accu | Точность. accu = (tp+tn)/(tp+fn+fp+tn) |
tpr , или sens , или reca | Истинный положительный уровень, или чувствительность или отзыв. tpr= sens = reca = tp/(tp+fn) |
fnr , или miss | Ложный отрицательный уровень или мисс. fnr = miss = fn/(tp+fn) |
fpr , или fall | Ложный положительный уровень или осадки, или 1 – специфика. fpr = fall = fp/(tn+fp) |
tnr , или spec | Истинный отрицательный уровень или специфика. tnr = spec = tn/(tn+fp) |
ppv , или prec | Положительное прогнозирующее значение или точность. ppv = prec = tp/(tp+fp) |
npv | Отрицательное прогнозирующее значение. npv = tn/(tn+fn) |
ecost | Ожидаемая стоимость. ecost = (tp*Cost(P|P)+fn*Cost(N|P)+fp* Cost(P|N)+tn*Cost(N|N))/(tp+fn+fp+tn) |
Пользовательский критерий | Пользовательски заданная функция с входными параметрами (C,scale,cost) , где C матрица беспорядка 2 на 2, scale 2 1 массив шкал класса и cost матрица стоимости misclassification 2 на 2. |
Некоторые из этих критериев возвращают NaN
значения в одном из двух специальных порогов, 'reject all'
и 'accept all'
.
Пример: 'XCrit','ecost'
'YCrit'
— Критерий, чтобы вычислить для Y
'tpr'
(значение по умолчанию) | те же опции критериев для X
'XVals'
— Значения для X
критерий'all'
(значение по умолчанию) | числовой массивЗначения для X
критерий в виде разделенной запятой пары, состоящей из 'XVals'
и числовой массив.
Если вы задаете XVals
, затем perfcurve
вычисляет X
и Y
и pointwise доверительные границы для Y
(когда применимый) только для заданного XVals
.
Если вы не задаете XVals
, затем perfcurve
, вычисляет X
и Y
и значения для всех баллов по умолчанию.
Вы не можете установить XVals
и TVals
одновременно.
Пример: 'XVals',[0:0.05:1]
Типы данных: single
| double
| char
| string
'TVals'
— Пороги для положительного счета класса'all'
(значение по умолчанию) | числовой массивПороги для положительного класса выигрывают в виде разделенной запятой пары, состоящей из 'TVals'
и любой 'all'
или числовой массив.
Если TVals
установлен в 'all'
или не заданный, и XVals
не задан, затем perfcurve
возвращает X
Y
, и T
значения для всех баллов и вычисляют pointwise доверительные границы для X
и Y
использование порогового усреднения.
Если TVals
установлен в числовой массив, затем perfcurve
возвращает X
Y
, и T
значения для заданных порогов и вычисляют pointwise доверительные границы для X
и Y
в этих порогах с помощью порогового усреднения.
Вы не можете установить XVals
и TVals
одновременно.
Пример: 'TVals',[0:0.05:1]
Типы данных: single
| double
| char
| string
'UseNearest'
— Индикатор, чтобы использовать самые близкие значения в данных'on'
(значение по умолчанию) | 'off'
Индикатор, чтобы использовать самые близкие значения в данных вместо заданного числового XVals
или TVals
В виде разделенной запятой пары, состоящей из 'UseNearest'
и любой 'on'
или 'off'
.
Если вы задаете числовой XVals
и набор UseNearest
к 'on'
, затем perfcurve
возвращает самый близкий уникальный X
значения нашли в данных, и они возвращают соответствующие значения Y
и T
.
Если вы задаете числовой XVals
и набор UseNearest
к 'off'
, затем perfcurve
возвращает отсортированный XVals
.
Если вы вычисляете доверительные границы перекрестной проверкой или начальной загрузкой, то этим параметром всегда является 'off'
.
Пример: 'UseNearest','off'
'ProcessNaN'
— perfcurve
метод для обработки NaN
баллы'ignore'
(значение по умолчанию) | 'addtofalse'
perfcurve
метод для обработки NaN
баллы в виде разделенной запятой пары, состоящей из 'ProcessNaN'
и 'ignore'
или 'addtofalse'
.
Если ProcessNaN
'ignore'
, затем perfcurve
удаляет наблюдения с NaN
баллы из данных.
Если ProcessNaN
'addtofalse'
, затем perfcurve
добавляют экземпляры с NaN
баллы к ложной классификации рассчитывают в соответствующем классе. Таким образом, perfcurve
всегда экземпляры количеств от положительного класса как ложное отрицание (FN), и это всегда считает экземпляры от отрицательного класса как положительная ложь (FP).
Пример: 'ProcessNaN','addtofalse'
'Prior'
— Априорные вероятности для положительных и отрицательных классов'empirical'
(значение по умолчанию) | 'uniform'
| массив с двумя элементамиАприорные вероятности для положительных и отрицательных классов в виде разделенной запятой пары, состоящей из 'Prior'
и 'empirical'
, 'uniform'
, или массив с двумя элементами.
Если Prior
'empirical'
, затем perfcurve
выводит априорные вероятности из частот класса.
Если Prior
'uniform'
, затем perfcurve
наборы все априорные вероятности, чтобы быть равным.
Пример: 'Prior',[0.3,0.7]
Типы данных: single
| double
| char
| string
'Cost'
— Затраты Misclassification
(значение по умолчанию) | матрица 2 на 2Misclassification стоит в виде разделенной запятой пары, состоящей из 'Cost'
и матрица 2 на 2, содержа [Cost(P|P),Cost(N|P);Cost(P|N),Cost(N|N)]
.
Cost(N|P)
стоимость неправильной классификации положительного класса как отрицательный класс. Cost(P|N)
стоимость неправильной классификации отрицательного класса как положительный класс. Обычно, Cost(P|P)
= 0 и Cost(N|N)
= 0, но perfcurve
позволяет вам задавать ненулевые затраты для правильной классификации также.
Пример: 'Cost',[0 0.7;0.3 0]
Типы данных: single
| double
'Alpha'
— Уровень значенияУровень значения для доверительных границ в виде разделенной запятой пары, состоящей из 'Alpha'
и скалярное значение в области значений 0 до 1. perfcurve
вычисляет 100* (1 – α) процент pointwise доверительные границы для X
Y
T
, и AUC
для доверительного уровня 1 – α.
Пример: 'Alpha',0.01
задает 99% доверительных границ
Типы данных: single
| double
'Weights'
— Веса наблюденияВеса наблюдения в виде разделенной запятой пары, состоящей из 'Weights'
и вектор неотрицательных скалярных значений. Этот вектор должен иметь столько же элементов сколько scores
или labels
сделать.
Если scores
и labels
находятся в массивах ячеек, и необходимо предоставить Weights
, веса должны быть в массиве ячеек также. В этом случае, каждый элемент в Weights
должен быть числовой вектор со столькими же элементов сколько соответствующий элемент в scores
. Например, numel(weights{1}) == numel(scores{1})
.
Когда perfcurve
вычисляет X
Y
и T
или доверительные границы с помощью перекрестной проверки, это использует эти веса наблюдения вместо количеств наблюдения.
Когда perfcurve
вычисляет доверительные границы с помощью начальной загрузки, она производит N из наблюдений N с заменой, с помощью этих весов в качестве вероятностей выборки многочлена.
Значением по умолчанию является вектор 1 с или массива ячеек, в котором каждым элементом является вектор 1 с.
Типы данных: single
| double
| cell
'NBoot'
— Количество копий начальной загрузкиКоличество копий начальной загрузки для расчета доверительных границ в виде разделенной запятой пары, состоящей из 'NBoot'
и положительное целое число. Значение по умолчанию 0 средних значений доверительные границы не вычисляется.
Если labels
и scores
массивы ячеек, этот параметр должен быть 0 потому что perfcurve
может использовать или перекрестную проверку или загрузиться, чтобы вычислить доверительные границы.
Пример: 'NBoot',500
Типы данных: single
| double
'BootType'
— Тип доверительного интервала для bootci
'bca'
(значение по умолчанию) | 'norm
| 'per'
| 'cper'
| 'stud'
Тип доверительного интервала для bootci
использоваться для расчета доверительных границ в виде разделенной запятой пары, состоящей из 'BootType'
и одно из следующего:
'bca'
— Сместите откорректированный и ускоренный метод процентили
'norm
или 'normal'
— Нормальный аппроксимированный интервал с загруженной систематической ошибкой и стандартной погрешностью
'per'
или 'percentile'
— Метод процентили
'cper'
или 'corrected percentile'
— Сместите откорректированный метод процентили
'stud'
или 'student'
— Доверительный интервал Studentized
Пример: 'BootType','cper'
'BootArg'
— Дополнительные входные параметры для bootci
{'Nbootstd',nbootstd}
| {'Stderr',stderr}
Дополнительные входные параметры для bootci
вычислить доверительные границы в виде разделенной запятой пары, состоящей из 'BootArg'
и {'Nbootstd',nbootstd}
или {'Stderr',stderr}
, аргументы пары "имя-значение" bootci
.
Когда вы вычисляете доверительные интервалы начальной загрузки studentized ('BootType'
isstudent
), можно дополнительно задать 'Nbootstd'
или 'Stderr'
, аргументы пары "имя-значение" bootci
, при помощи 'BootArg'
.
'BootArg',{'Nbootstd',nbootstd}
оценивает стандартную погрешность статистики начальной загрузки с помощью начальной загрузки с nbootstd
выборки данных. nbootstd
положительное целое число, и его значение по умолчанию равняется 100.
'BootArg',{'Stderr',stderr}
оценивает стандартную погрешность статистики начальной загрузки пользовательским функциональным stderr
это берет [1:numel(scores)]'
как входной параметр. stderr
указатель на функцию.
Пример: 'BootArg',{'Nbootstd',nbootstd}
Типы данных: cell
'Options'
— Опции для управления расчетом доверительных интервалов[]
(значение по умолчанию) | массив структур, возвращенный statset
Опции для управления расчетом доверительных интервалов в виде разделенной запятой пары, состоящей из 'Options'
и массив структур, возвращенный statset
. Эти опции требуют Parallel Computing Toolbox™. perfcurve
использование этот аргумент для вычисления pointwise доверительные границы только. Чтобы вычислить эти границы, необходимо передать массивы ячеек для labels
и scores
или набор NBoot
к положительному целому числу.
Эта таблица суммирует доступные параметры.
Опция | Описание |
---|---|
'UseParallel' |
|
'UseSubstreams' |
|
'Streams' |
В этом случае используйте массив ячеек одного размера с параллельным пулом. Если параллельный пул не открыт, то |
Если 'UseParallel'
true
и 'UseSubstreams'
false
, затем длина 'Streams'
должен равняться количеству рабочих, используемых perfcurve
. Если параллельный пул уже открыт, то длина 'Streams'
размер параллельного пула. Если параллельный пул не уже открыт, то MATLAB® может открыть пул для вас, в зависимости от вашей установки и настроек. Чтобы гарантировать более предсказуемые результаты, используйте parpool
и явным образом создайте параллельный пул прежде, чем вызов perfcurve
и установка 'Options',statset('UseParallel',true)
.
Пример: 'Options',statset('UseParallel',true)
Типы данных: struct
X
— x - координирует для кривой производительностиfpr
(значение по умолчанию) | m-by-3 матрицаx- для кривой производительности, возвращенной как вектор или m-by-3 матрица. По умолчанию, X
значения являются ложным положительным уровнем, FPR (осадки или 1 – специфика). Изменить X
, используйте XCrit
аргумент пары "имя-значение".
Если perfcurve
не вычисляет pointwise доверительные границы, или если это вычисляет их использующий вертикальное усреднение, затем X
вектор.
Если perfcurve
вычисляет доверительные границы с помощью порогового усреднения, затем X
m-by-3 матрица, где m является количеством фиксированных пороговых значений. Первый столбец X
содержит среднее значение. Вторые и третьи столбцы содержат нижнюю границу и верхнюю границу, соответственно, pointwise доверительных границ.
Y
— y - координирует для кривой производительностиtpr
(значение по умолчанию) | m-by-3 матрицаy- для кривой производительности, возвращенной как вектор или m-by-3 матрица. По умолчанию, Y
значения являются истинным положительным уровнем, TPR (отзыв или чувствительность). Изменить Y
, используйте YCrit
аргумент пары "имя-значение".
Если perfcurve
не вычисляет pointwise доверительные границы, затем Y
вектор.
Если perfcurve
вычисляет доверительные границы, затем Y
m-by-3 матрица, где m является количеством фиксированного X
значения или пороги (T
значения. Первый столбец Y
содержит среднее значение. Вторые и третьи столбцы содержат нижнюю границу и верхнюю границу, соответственно, pointwise доверительных границ.
T
— Пороги на баллах классификатораПороги на музыке классификатора к вычисленным значениям X
и Y
, возвращенный как вектор или m-by-3 матрица.
Если perfcurve
не вычисляет pointwise доверительные границы или вычисляет их использующий пороговое усреднение, затем T
вектор.
Если perfcurve
вычисляет доверительные границы с помощью вертикального усреднения, T
m-by-3 матрица, где m является количеством фиксированного X
значения. Первый столбец T
содержит среднее значение. Вторые и третьи столбцы содержат нижнюю границу и верхнюю границу, соответственно, pointwise доверительных границ.
Для каждого порога, TP
количество истинных положительных наблюдений с баллами, больше, чем или равный этому порогу и FP
количество ложных положительных наблюдений с баллами, больше, чем или равный этому порогу. perfcurve
задает отрицательные количества, TN
и FN
, похожим способом. Функция затем сортирует пороги в порядке убывания, который соответствует порядку по возрастанию положительных количеств.
Для m отличные пороги, найденные в массиве баллов, perfcurve
возвращает X
Y
и T
массивы с m + 1 строка. perfcurve
элементы наборов T(2:m+1)
к отличным порогам и T(1)
реплицирует T(2)
. Условно, T(1)
представляет самый высокий 'reject all'
порог и perfcurve
вычисляет соответствующие значения X
и Y
для TP = 0
и FP = 0
. T(end)
значением является самый низкий 'accept all'
порог, для который TN = 0
и FN = 0
.
AUC
— Область под кривойОбласть под кривой (AUC
) для вычисленных значений X
и Y
, возвращенный как скалярное значение или вектор 3 на 1.
Если perfcurve
не вычисляет pointwise доверительные границы, AUC
скалярное значение.
Если perfcurve
вычисляет доверительные границы с помощью вертикального усреднения, AUC
вектор 3 на 1. Первый столбец AUC
содержит среднее значение. Вторые и третьи столбцы содержат нижнюю границу и верхнюю границу, соответственно, доверительной границы.
Для совершенного классификатора, AUC = 1. Для классификатора, который случайным образом присваивает наблюдения классам, AUC = 0.5.
Если вы устанавливаете XVals
к 'all'
(значение по умолчанию), затем perfcurve
вычисляет AUC
использование возвращенного X
и Y
значения.
Если XVals
числовой массив, затем perfcurve
вычисляет AUC
использование X
и Y
значения от всех отличных баллов в интервале, которые заданы самыми маленькими и самыми большими элементами XVals
. Более точно, perfcurve
находит X
значения для всех отличных порогов, как будто XVals
были установлены в 'all'
, и затем использует подмножество их (с соответствующим Y
значения) между min(XVals)
и max(XVals)
вычислить AUC
.
perfcurve
использует трапециевидное приближение, чтобы оценить область. Если первое или последнее значение X
или Y
NaN
s, затем perfcurve
удаляет их, чтобы позволить вычисление AUC
. Это заботится о критериях, которые производят NaN
s для специального 'reject all'
или 'accept all'
пороги, например, положительное прогнозирующее значение (PPV) или отрицательное прогнозирующее значение (NPV).
OPTROCPT
— Оптимальная рабочая точка кривой ROCОптимальная рабочая точка кривой ROC, возвращенной как 1 2 массив со значениями ложного положительного уровня (FPR) и истинного положительного уровня (TPR) для оптимальной рабочей точки ROC.
perfcurve
вычисляет OPTROCPT
поскольку стандартный ROC изгибается только, и устанавливает на NaN
s в противном случае. Получить оптимальную рабочую точку для кривой ROC, perfcurve
сначала находит наклон, S, с помощью
Стойте (N |P) стоимость неправильной классификации положительного класса как отрицательный класс. Стойте (P |N) стоимость неправильной классификации отрицательного класса как положительный класс.
P = TP + FN и N = TN + FP. Они - общие количества экземпляра в положительном и отрицательном классе, соответственно.
perfcurve
затем находит оптимальную рабочую точку путем перемещения прямой линии с наклонным S от левого верхнего угла графика ROC (FPR = 0
, TPR = 1
) вниз и направо, пока это не пересекает кривую ROC.
SUBY
— Значения для отрицательных подклассовЗначения для отрицательных подклассов, возвращенных как массив.
Если вы задаете только один отрицательный класс, то SUBY
идентично Y
.
Если вы задаете k отрицательные классы, то SUBY
матрица размера m-by-k, где m является количеством возвращенных значений для X
и Y
, и k является количеством отрицательных классов. perfcurve
вычисляет Y
значения путем подведения итогов количеств по всем отрицательным классам.
SUBY
дает значения Y
критерий каждого отрицательного класса отдельно. Для каждого отрицательного класса, perfcurve
помещает новый столбец в SUBY
и заливки это с Y
значения для истинного отрицания (TN) и положительной лжи (FP), считаемой только для этого класса.
SUBYNAMES
— Отрицательные имена классовОтрицательные имена классов, возвращенные как массив ячеек.
Если вы обеспечиваете входной массив отрицательных имен классов, NegClass
, затем perfcurve
копии называют в SUBYNAMES
.
Если вы не обеспечиваете NegClass
, затем perfcurve
извлечения SUBYNAMES
от входных меток. Порядок SUBYNAMES
совпадает с порядком столбцов в SUBY
. Таким образом, SUBY(:,1)
для отрицательного класса SUBYNAMES{1}
, SUBY(:,2)
для отрицательного класса SUBYNAMES{2}
, и так далее.
Если вы предоставляете массивы ячеек для labels
и scores
, или если вы устанавливаете NBoot
к положительному целому числу, затем perfcurve
возвращает pointwise доверительные границы для X
Y
T
, и AUC
. Вы не можете предоставить массивы ячеек для labels
и scores
и набор NBoot
к положительному целому числу одновременно.
perfcurve
передискретизирует данные, чтобы вычислить доверительные границы с помощью или перекрестной проверки или начальной загрузки.
Перекрестная проверка — Если вы предоставляете массивы ячеек для labels
и scores
, затем perfcurve
перекрестная проверка использования и элементы обработок в массивах ячеек как перекрестная проверка сворачиваются. labels
может быть массив ячеек числовых векторов, логических векторов, символьных матриц, массивов ячеек из символьных векторов или категориальных векторов. Все элементы в labels
должен иметь тот же тип. scores
может быть массив ячеек числовых векторов. Массивы ячеек для labels
и scores
должен иметь то же число элементов. Количество меток в ячейке j labels
должно быть равно количеству баллов в ячейке j scores
для любого j в диапазоне от 1 до числа элементов в scores
.
Начальная загрузка — Если вы устанавливаете NBoot
к положительному целочисленному n, perfcurve
генерирует копии начальной загрузки n, чтобы вычислить pointwise доверительные границы. Если вы используете XCrit
или YCrit
установить критерий X
или Y
к анонимной функции, perfcurve
может вычислить доверительные границы только с помощью начальной загрузки.
perfcurve
оценивает доверительные границы с помощью одного из двух методов:
Вертикальное усреднение (VA) — perfcurve
оценочные доверительные границы на Y
и T
в фиксированных значениях X
. Таким образом, perfcurve
берет выборки кривых ROC для фиксированного X
значения, составляет в среднем соответствующий Y
и T
значения, и вычисляют стандартные погрешности. Можно использовать XVals
аргумент пары "имя-значение", чтобы зафиксировать X
значения для вычислительных доверительных границ. Если вы не задаете XVals
, затем perfcurve
вычисляет доверительные границы во всем X
значения.
Пороговое усреднение (TA) — perfcurve
берет выборки кривых ROC в фиксированных порогах T
для положительного счета класса, составляет в среднем соответствующий X
и Y
значения и оценки доверительные границы. Можно использовать TVals
аргумент пары "имя-значение", чтобы использовать этот метод в вычислительных доверительных границах. Если вы устанавливаете TVals
к 'all'
или не задавайте TVals
или XVals
, затем perfcurve
возвращает X
Y
, и T
значения для всех баллов и вычисляют pointwise доверительные границы для Y
и X
использование порогового усреднения.
Когда вы вычисляете доверительные границы, Y
m-by-3 массив, где m является количеством фиксированного X
значения или пороги (T
значения. Первый столбец Y
содержит среднее значение. Вторые и третьи столбцы содержат нижнюю границу и верхнюю границу, соответственно, pointwise доверительных границ. AUC
вектор-строка с тремя элементами, в соответствии с тем же соглашением. Если perfcurve
вычисляет доверительные границы с помощью ВА, затем T
m-by-3 матрица и X
вектор-столбец. Если perfcurve
TA использования, затем X
m-by-3 матрица и T
вектор-столбец.
perfcurve
возвращает pointwise доверительные границы. Это не возвращает одновременную полосу доверия для целой кривой.
[1] Т. Фосетт. “Графики ROC: примечания и практические факторы для исследователей”, 2004.
[2] Цвейг, M. и Г. Кэмпбелл. “Рабочая характеристика получателя (ROC) Графики: Основной Инструмент Оценки в Клинической Медицине”. Clin. Chem. 1993, 39/4, стр 561–577.
[3] Дэвис, J. и М. Гоудрич. “Отношение Между Отзывом Точности и Кривыми ROC”. Продолжения ICML ’06, 2006, стр 233–240.
[4] Московиц, C. и М. Пепе. “Определяя количество и сравнивая прогнозирующую точность непрерывных прогностических факторов для бинарных результатов”. Биостатистика, 2004, 5, стр 113–127.
[5] Хуан, Y., М. Пепе и Цз. Фэн. “Оценивая прогнозирующий из непрерывного маркера”. U. Вашингтонский бумажный ряд биостатистики, 2006, 250–261.
[6] Briggs, W. и Р. Зэрецки. “График Навыка: Графический Метод для Оценки Непрерывных Диагностических Тестов”. Биометрика, 2008, 63, стр 250 – 261.
[7] Р. Беттингер. “Чувствительный к стоимости выбор классификатора Используя метод выпуклой оболочки ROC”. SAS Institute.
Чтобы запуститься параллельно, установите 'UseParallel'
опция к true
.
Установите 'UseParallel'
поле структуры опций к true
использование statset
и задайте 'Options'
аргумент пары "имя-значение" в вызове этой функции.
Например: 'Options',statset('UseParallel',true)
Для получения дополнительной информации смотрите 'Options'
аргумент пары "имя-значение".
Для более общей информации о параллельных вычислениях смотрите функции MATLAB Запуска с Автоматической Параллельной Поддержкой (Parallel Computing Toolbox).
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.