Кривая рабочей характеристики получателя (ROC) или другая кривая производительности для классификатора выводятся
[X,Y] =
perfcurve(labels,scores,posclass)[X,Y,T]
= perfcurve(labels,scores,posclass)[X,Y,T,AUC]
= perfcurve(labels,scores,posclass)[X,Y,T,AUC,OPTROCPT]
= perfcurve(labels,scores,posclass)[X,Y,T,AUC,OPTROCPT,SUBY]
= perfcurve(labels,scores,posclass)[X,Y,T,AUC,OPTROCPT,SUBY,SUBYNAMES]
= perfcurve(labels,scores,posclass)[___] = perfcurve(labels,scores,posclass,Name,Value)[___] = 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 ionosphereX 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 приводит к лучшим результатам. Для визуального сравнения производительности классификации с этими двумя гамма значениями параметров смотрите Train Классификатор 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 array
{'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 |
|---|---|
| Числовой вектор | Числовой скаляр |
| Логический вектор | Логический скаляр |
| Символьная матрица | Символьный вектор |
| StringArray | Скаляр строки |
| Массив ячеек из символьных векторов | Вектор символов или ячейка, содержащая вектор символов |
| Категориальный вектор | Категориальный скаляр |
Например, в проблеме диагноза рака, если злокачественная опухоль является положительным классом, то задают posclass как 'malignant'.
Типы данных: single | double | logical | char | string | cell | categorical
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (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[0 0.5;0.5 0] (значение по умолчанию) | матрица 2 на 2Затраты Misclassification, заданные как пара, разделенная запятой, состоящая из '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' является 'student'), можно дополнительно задать 'Nbootstd' или 'Stderr', аргументы пары "имя-значение" bootci, при помощи 'BootArg'.
'BootArg',{'Nbootstd',nbootstd} оценивает стандартную погрешность статистики начальной загрузки с помощью начальной загрузки с выборками данных nbootstd. nbootstd является положительным целым числом, и его значение по умолчанию равняется 100.
'BootArg',{'Stderr',stderr} оценивает стандартную погрешность статистики начальной загрузки пользовательским функциональным stderr, который берет [1:numel(scores)]' в качестве входного параметра. stderr является указателем на функцию.
Пример: 'BootArg',{'Nbootstd',nbootstd}
Типы данных: cell
Опции Опции для управления вычислением доверительных интервалов[] (значение по умолчанию) | массив структур, возвращенный 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.