Кривая рабочей характеристики получателя (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 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 приводит к лучшим результатам. Для визуального сравнения производительности классификации с этими двумя гамма значениями параметров смотрите 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.