Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.
Curva de característica de funcionamiento del receptor (ROC) u otra curva de rendimiento para la salida del clasificador
[___] = perfcurve(
devuelve las coordenadas de una curva ROC y cualquier otro argumento de salida de las sintaxis anteriores, con opciones adicionales especificadas por uno o más argumentos de par.labels
,scores
,posclass
,Name,Value
)Name,Value
Por ejemplo, puede proporcionar una lista de clases negativas, cambiar el criterio o, calcular mediante validación cruzada o arranque, especificar el costo de clasificación incorrecta o calcular los límites de confianza en paralelo.X
Y
límites de confianza puntuales
Cargue los datos de ejemplo.
load fisheriris
Utilice solo las dos primeras entidades como variables predictoras. Defina un problema de clasificación binaria utilizando sólo las medidas que corresponden a la especie versicolor y virginica.
pred = meas(51:end,1:2);
Defina la variable de respuesta binaria.
resp = (1:100)'>50; % Versicolor = 0, virginica = 1
Ajuste un modelo de regresión logística.
mdl = fitglm(pred,resp,'Distribution','binomial','Link','logit');
Calcular la curva ROC. Utilice las estimaciones de probabilidad del modelo de regresión logística como puntuaciones.
scores = mdl.Fitted.Probability; [X,Y,T,AUC] = perfcurve(species(51:end,:),scores,'virginica');
almacena los valores de umbral en la matriz.perfcurve
T
Visualice el área debajo de la curva.
AUC
AUC = 0.7918
El área bajo la curva es 0.7918. El AUC máximo es 1, que corresponde a un clasificador perfecto. Los valores AUC más grandes indican un mejor rendimiento del clasificador.
Trazar la curva ROC.
plot(X,Y) xlabel('False positive rate') ylabel('True positive rate') title('ROC for Classification by Logistic Regression')
Cargue los datos de ejemplo.
load ionosphere
es una matriz de predictores de valor real de 351x34. es una matriz de caracteres de etiquetas de clase: para los retornos de radar incorrectos y para los buenos retornos de radar.X
Y
'b'
'g'
Vuelva a formatear la respuesta para que se ajuste a una regresión logística. Utilice las variables predictoras 3 a 34.
resp = strcmp(Y,'b'); % resp = 1, if Y = 'b', or 0 if Y = 'g' pred = X(:,3:34);
Ajuste un modelo de regresión logística para estimar las probabilidades posteriores de que un radar vuelva a ser malo.
mdl = fitglm(pred,resp,'Distribution','binomial','Link','logit'); score_log = mdl.Fitted.Probability; % Probability estimates
Calcular la curva ROC estándar utilizando las probabilidades de puntuaciones.
[Xlog,Ylog,Tlog,AUClog] = perfcurve(resp,score_log,'true');
Entrene un clasificador SVM en los mismos datos de ejemplo. Estandarizar los datos.
mdlSVM = fitcsvm(pred,resp,'Standardize',true);
Calcular las probabilidades posteriores (puntuaciones).
mdlSVM = fitPosterior(mdlSVM); [~,score_svm] = resubPredict(mdlSVM);
La segunda columna de contiene las probabilidades posteriores de mala trayectoria del radar.score_svm
Calcule la curva ROC estándar utilizando las puntuaciones del modelo SVM.
[Xsvm,Ysvm,Tsvm,AUCsvm] = perfcurve(resp,score_svm(:,mdlSVM.ClassNames),'true');
Coloque un clasificador Bayes ingenuo en los mismos datos de muestra.
mdlNB = fitcnb(pred,resp);
Calcular las probabilidades posteriores (puntuaciones).
[~,score_nb] = resubPredict(mdlNB);
Calcule la curva ROC estándar utilizando las puntuaciones de la clasificación Bayes ingenua.
[Xnb,Ynb,Tnb,AUCnb] = perfcurve(resp,score_nb(:,mdlNB.ClassNames),'true');
Trazar las curvas ROC en el mismo gráfico.
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
Aunque SVM produce mejores valores ROC para umbrales más altos, la regresión logística suele ser mejor para distinguir los retornos de radar defectuosos de los buenos. La curva ROC para Bayes ingenuos es generalmente más baja que las otras dos curvas ROC, lo que indica un peor rendimiento en la muestra que los otros dos métodos clasificadores.
Compare el área debajo de la curva para los tres clasificadores.
AUClog
AUClog = 0.9659
AUCsvm
AUCsvm = 0.9489
AUCnb
AUCnb = 0.9393
La regresión logística tiene la medida AUC más alta para la clasificación y Bayes ingenuos tiene la más baja. Este resultado sugiere que la regresión logística tiene un mejor rendimiento promedio en la muestra para estos datos de ejemplo.
En este ejemplo se muestra cómo determinar el mejor valor de parámetro para una función de kernel personalizada en un clasificador utilizando las curvas ROC.
Genere un conjunto aleatorio de puntos dentro del círculo de la unidad.
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)];
Defina las variables predictoras. Etiquetar puntos en el primer y tercer cuadrante como pertenecientes a la clase positiva, y los del segundo y cuarto cuadrantes de la clase negativa.
pred = [X1; X2]; resp = ones(4*n,1); resp(2*n + 1:end) = -1; % Labels
Cree la función, que acepta dos matrices en el espacio de entidades como entradas, y las transforma en una matriz Gram utilizando el kernel sigmoid.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
Entrene a un clasificador SVM utilizando la función de kernel sigmoid. Es una buena práctica estandarizar los datos.
SVMModel1 = fitcsvm(pred,resp,'KernelFunction','mysigmoid',... 'Standardize',true); SVMModel1 = fitPosterior(SVMModel1); [~,scores1] = resubPredict(SVMModel1);
Establecer ; dentro y guardar como .gamma = 0.5
mysigmoid.m
mysigmoid2.m
Y, entrenar un clasificador SVM utilizando el kernel sigmoid ajustado.
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);
Calcule las curvas ROC y el área debajo de la curva (AUC) para ambos modelos.
[x1,y1,~,auc1] = perfcurve(resp,scores1(:,2),1); [x2,y2,~,auc2] = perfcurve(resp,scores2(:,2),1);
Trazar las curvas 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');
La función del núcleo con el parámetro gamma establecido en 0.5 proporciona mejores resultados en la muestra.
Compare las medidas de las AUC.
auc1 auc2
auc1 = 0.9518 auc2 = 0.9985
El área debajo de la curva para gamma establecida en 0.5 es mayor que la de gamma establecida en 1. Esto también confirma que el valor del parámetro gamma de 0,5 produce mejores resultados. Para ver la comparación visual del rendimiento de clasificación con estos dos valores de parámetros gamma, véase .Train SVM Classifier Using Custom Kernel
Cargue los datos de ejemplo.
load fisheriris
El vector de columna, , consiste en flores de iris de tres especies diferentes: setosa, versicolor, virginica.species
La matriz doble consta de cuatro tipos de medidas en las flores: longitud del sépalo, ancho del sépalo, longitud del pétalo y ancho del pétalo.meas
Todas las medidas son en centímetros.
Entrene un árbol de clasificación utilizando la longitud y anchura del sépalo como variables predictoras. Es una buena práctica especificar los nombres de clase.
Model = fitctree(meas(:,1:2),species, ... 'ClassNames',{'setosa','versicolor','virginica'});
Predecir las etiquetas de clase y las puntuaciones de las especies basadas en el árbol.Model
[~,score] = resubPredict(Model);
Las puntuaciones son las probabilidades posteriores de que una observación (una fila de la matriz de datos) pertenezca a una clase. Las columnas corresponden a las clases especificadas por .score
'ClassNames'
Por lo tanto, la primera columna corresponde a setosa, la segunda corresponde a versicolor, y la tercera columna corresponde a virginica.
Calcular la curva ROC para las predicciones de que una observación pertenece a versicolor, dadas las etiquetas de clase verdaderas.species
También calcule el punto de funcionamiento y los valores óptimos para las subclases negativas.y Devuelve los nombres de las clases negativas.
Dado que se trata de un problema multiclase, no puede simplemente suministrar como entrada a .score(:,2)
perfcurve
Hacerlo no daría suficiente información sobre las puntuaciones de las dos clases negativas (setosa y virginica).perfcurve
Este problema es diferente de un problema de clasificación binaria, donde conocer las puntuaciones de una clase es suficiente para determinar las puntuaciones de la otra clase. Por lo tanto, debe proporcionar una función que tenga en cuenta las puntuaciones de las dos clases negativas.perfcurve
Una de esas funciones es
diffscore = score(:,2) - max(score(:,1),score(:,3)); [X,Y,T,~,OPTROCPT,suby,subnames] = perfcurve(species,diffscore,'versicolor');
, por defecto, es la tasa de falsos positivos (fallout o 1-especificidad) y, por defecto, es la tasa positiva verdadera (recuperación o sensibilidad).X
Y
La etiqueta de clase positiva es .versicolor
Dado que no se define una clase negativa, se supone que las observaciones que no pertenecen a la clase positiva están en una clase.perfcurve
La función lo acepta como la clase negativa.
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'}
Trazar la curva ROC y el punto de operación óptimo en la curva 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
Busque el umbral que corresponde al punto de funcionamiento óptimo.
T((X==OPTROCPT(1))&(Y==OPTROCPT(2)))
ans = 0.2857
Especifique como clase negativa y calcule y trace la curva ROC para .virginica
versicolor
Una vez más, debe proporcionar una función que tenga en cuenta las puntuaciones de la clase negativa.perfcurve
Un ejemplo de una función a utilizar es
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
Cargue los datos de ejemplo.
load fisheriris
El vector de columna consiste en flores de iris de tres especies diferentes: setosa, versicolor, virginica.species
La matriz doble consta de cuatro tipos de medidas en las flores: longitud del sépalo, ancho del sépalo, longitud del pétalo y ancho del pétalo.meas
Todas las medidas son en centímetros.
Utilice solo las dos primeras entidades como variables predictoras. Defina un problema binario utilizando sólo las medidas que corresponden a las especies versicolor y virginica.
pred = meas(51:end,1:2);
Defina la variable de respuesta binaria.
resp = (1:100)'>50; % Versicolor = 0, virginica = 1
Ajuste un modelo de regresión logística.
mdl = fitglm(pred,resp,'Distribution','binomial','Link','logit');
Calcular los intervalos de confianza puntuales en la tasa positiva verdadera (TPR) mediante el promedio vertical (VA) y el muestreo mediante bootstrap.
[X,Y,T] = perfcurve(species(51:end,:),mdl.Fitted.Probability,... 'virginica','NBoot',1000,'XVals',[0:0.05:1]);
establece el número de réplicas de arranque en 1000. solicita que se devuelvan , , y los valores de todas las puntuaciones y promedian los valores (tasa positiva verdadera) en todos los valores (tasa de falso positivo) utilizando el promedio vertical.'NBoot',1000
'XVals','All'
perfcurve
X
Y
T
Y
X
Si no especifica , calcula los límites de confianza mediante el promedio de umbral de forma predeterminada.XVals
perfcurve
Trazar los intervalos de confianza puntuales.
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')
Es posible que no siempre sea posible controlar la tasa de falsos positivos (FPR, el valor de este ejemplo).X
Por lo tanto, es posible que desee calcular los intervalos de confianza puntuales en tasas positivas reales (TPR) por promedio de umbral.
[X1,Y1,T1] = perfcurve(species(51:end,:),mdl.Fitted.Probability,... 'virginica','NBoot',1000);
Si establece en , o si no especifica o , , devuelve , , y valores para todas las puntuaciones y calcula los límites de confianza puntuales para y mediante el promedio de umbral.'TVals'
'All'
'TVals'
'Xvals'
perfcurve
X
Y
T
X
Y
Trazar los límites de confianza.
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')
Especifique los valores de umbral para corregir y calcular la curva ROC. A continuación, trace la curva.
[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
— Etiquetas de clase verdaderasEtiquetas de clase True, especificadas como un vector numérico, un vector lógico, una matriz de caracteres, una matriz de cadenas, una matriz de celdas de vectores de caracteres o una matriz categórica. Para obtener más información, consulte .Grouping Variables
Ejemplo: {'hi','mid','hi','low',...,'mid'}
Ejemplo: ['H','M','H','L',...,'M']
Tipos de datos: single
| double
| logical
| char
| string
| cell
| categorical
scores
— Puntuaciones devueltas por un clasificadorPuntuaciones devueltas por un clasificador para algunos datos de ejemplo, especificados como un vector de puntos flotantes. debe tener el mismo número de elementos que .scores
labels
Tipos de datos: single
| double
posclass
— Etiqueta de clase positivaEtiqueta de clase positiva, especificada como escalar numérico, escalar lógico, vector de caracteres, escalar de cadena, celda que contiene un vector de caracteres o escalar categórico. La clase positiva debe ser miembro de las etiquetas de entrada. El valor que puede especificar depende del valor de .posclass
labels
Valorlabels | Valorposclass |
---|---|
Vector numérico | Escalar numérico |
Vector lógico | Escalar lógico |
Matriz de caracteres | Vector de caracteres |
Matriz de cadenas | Escalar de cuerdas |
Matriz de celdas de vectores de caracteres | Vector de caracteres o celda que contiene el vector de caracteres |
Vector categórico | Escalar categórico |
Por ejemplo, en un problema de diagnóstico de cáncer, si un tumor maligno es la clase positiva, especifique como .posclass
'malignant'
Tipos de datos: single
| double
| logical
| char
| string
| cell
| categorical
Especifique pares opcionales separados por comas de argumentos. es el nombre del argumento y es el valor correspondiente. deben aparecer entre comillas.Name,Value
Name
Value
Name
Puede especificar varios argumentos de par de nombre y valor en cualquier orden como .Name1,Value1,...,NameN,ValueN
'NegClass','versicolor','XCrit','fn','NBoot',1000,'BootType','per'
También especifica que los límites de confianza puntuales se calculan mediante el método percentil.'NegClass'
— Lista de clases negativas'all'
(predeterminado) | matriz numérica | matriz categórica | matriz de cadenas | matriz celular de vectores de caracteresLista de clases negativas, especificada como el par separado por comas que consta de , y una matriz numérica, una matriz categórica, una matriz de cadenas o una matriz de celdas de vectores de caracteres.'NegClass'
De forma predeterminada, establece y considera que todas las clases no positivas que se encuentran en la matriz de entrada de etiquetas son negativas.perfcurve
NegClass
'all'
Si es un subconjunto de las clases que se encuentran en la matriz de entrada de etiquetas, descarta las instancias con etiquetas que no pertenecen a clases positivas o negativas.NegClass
perfcurve
Ejemplo: 'NegClass',{'versicolor','setosa'}
Tipos de datos: single
| double
| categorical
| char
| string
| cell
'XCrit'
— Criterio para calcular paraX
'fpr'
(predeterminado) | 'fnr'
| 'tnr'
| 'ppv'
| 'ecost'
| ...Criterio para calcular , especificado como el par separado por comas que consta de y uno de los siguientes.X
'XCrit'
Criterio | Descripción |
---|---|
tp | Número de instancias positivas verdaderas |
fn | Número de instancias negativas falsas. |
fp | Número de instancias de falsos positivos. |
tn | Número de instancias negativas verdaderas. |
tp+fp | Suma de casos verdaderos positivos y falsos positivos. |
rpp | Tasa de predicciones positivas.rpp = (tp+fp)/(tp+fn+fp+tn) |
rnp | Tasa de predicciones negativas.rnp = (tn+fn)/(tp+fn+fp+tn) |
accu | Precisión.accu = (tp+tn)/(tp+fn+fp+tn) |
, o , otpr sens reca | Tasa positiva verdadera, o sensibilidad, o recuperación.tpr= sens = reca = tp/(tp+fn) |
Ofnr miss | Tasa negativa falsa, o falta.fnr = miss = fn/(tp+fn) |
Ofpr fall | Tasa de falsos positivos, o consecuencias, o 1 – especificidad.fpr = fall = fp/(tn+fp) |
Otnr spec | Tasa negativa real o especificidad.tnr = spec = tn/(tn+fp) |
Oppv prec | Valor predictivo positivo o precisión.ppv = prec = tp/(tp+fp) |
npv | Valor predictivo negativo.npv = tn/(tn+fn) |
ecost | Costo esperado.ecost = (tp*Cost(P|P)+fn*Cost(N|P)+fp* Cost(P|N)+tn*Cost(N|N))/(tp+fn+fp+tn) |
Criterio personalizado | Una función definida a medida con los argumentos de entrada, donde es una matriz de confusión de 2 por 2, es una matriz de escalas de clases de 2 por 1 y es una matriz de coste de clasificación incorrecta de 2 por 2.(C,scale,cost) C scale cost |
Precaución
Algunos de estos criterios devuelven valores en uno de los dos umbrales especiales y .NaN
'reject all'
'accept all'
Ejemplo: 'XCrit','ecost'
'YCrit'
— Criterio para calcular paraY
'tpr'
(predeterminado) | mismas opciones de criterios paraX
'XVals'
— Valores para el criterioX
'all'
(predeterminado) | matriz numéricaValores para el criterio, especificados como el par separado por comas que consta de y una matriz numérica.X
'XVals'
Si especifica , calcula y for (cuando corresponda) solo para el archivo .XVals
perfcurve
X
Y
límites de confianza puntualesY
XVals
Si no especifica , entonces , calcula y los valores de todas las puntuaciones de forma predeterminada.XVals
perfcurve
X
Y
Nota
No se puede establecer y al mismo tiempo.XVals
TVals
Ejemplo: 'XVals',[0:0.05:1]
Tipos de datos: single
| double
| char
| string
'TVals'
— Umbrales para la puntuación positiva de la clase'all'
(predeterminado) | matriz numéricaUmbrales para la puntuación de clase positiva, especificados como el par separado por comas que consta de y una matriz numérica.'TVals'
'all'
Si se establece en o no se especifica y no se especifica, devuelve , , y valores para todas las puntuaciones y cálculos para y mediante el promedio de umbral.TVals
'all'
XVals
perfcurve
X
Y
T
límites de confianza puntualesX
Y
Si se establece en una matriz numérica, devuelve , , y los valores de los umbrales especificados y calcula los límites de confianza puntuales para y en estos umbrales mediante el promedio de umbral.TVals
perfcurve
X
Y
T
X
Y
Nota
No se puede establecer y al mismo tiempo.XVals
TVals
Ejemplo: 'TVals',[0:0.05:1]
Tipos de datos: single
| double
| char
| string
'UseNearest'
— Indicador para utilizar los valores más cercanos en los datos'on'
(predeterminado) | 'off'
Indicador para utilizar los valores más cercanos en los datos en lugar del número especificado o , especificado como el par separado por comas que consta de y o .XVals
TVals
'UseNearest'
'on'
'off'
Si especifica numeric y se establece en , devuelve los valores únicos más cercanos que se encuentran en los datos y devuelve los valores correspondientes de y .XVals
UseNearest
'on'
perfcurve
X
Y
T
Si especifica numeric y se establece en , devuelve el archivo .XVals
UseNearest
'off'
perfcurve
XVals
Si calcula los límites de confianza mediante validación cruzada o arranque, este parámetro siempre es .'off'
Ejemplo: 'UseNearest','off'
'ProcessNaN'
— método para procesar puntuacionesperfcurve
NaN
'ignore'
(predeterminado) | 'addtofalse'
método para procesar puntuaciones, especificado como el par separado por comas que consta de y o .perfcurve
NaN
'ProcessNaN'
'ignore'
'addtofalse'
Si es , elimina las observaciones con puntuaciones de los datos.ProcessNaN
'ignore'
perfcurve
NaN
Si es , agrega instancias con puntuaciones a recuentos de clasificación falsos en la clase respectiva.ProcessNaN
'addtofalse'
perfcurve
NaN
Es decir, siempre cuenta las instancias de la clase positiva como falso negativo (FN), y siempre cuenta las instancias de la clase negativa como falso positivo (FP).perfcurve
Ejemplo: 'ProcessNaN','addtofalse'
'Prior'
— Probabilidades previas para clases positivas y negativas'empirical'
(predeterminado) | 'uniform'
| matriz con dos elementosProbabilidades anteriores para clases positivas y negativas, especificadas como el par separado por comas que consta de y , , o una matriz con dos elementos.'Prior'
'empirical'
'uniform'
Si es , entonces deriva probabilidades anteriores de las frecuencias de clase.Prior
'empirical'
perfcurve
Si es , entonces establece todas las probabilidades anteriores para que sean iguales.Prior
'uniform'
perfcurve
Ejemplo: 'Prior',[0.3,0.7]
Tipos de datos: single
| double
| char
| string
'Cost'
— Costos de clasificación errónea[0 0.5;0.5 0]
(predeterminado) | Matriz 2 por 2Costes de clasificación errónea, especificados como el par separado por comas que consta de una matriz de 2 por 2, que contiene .'Cost'
[Cost(P|P),Cost(N|P);Cost(P|N),Cost(N|N)]
es el costo de clasificar erróneamente una clase positiva como una clase negativa. es el costo de clasificar erróneamente una clase negativa como una clase positiva.Cost(N|P)
Cost(P|N)
Por lo general, 0 y 0, pero también permite especificar costes distintos de cero para una clasificación correcta.Cost(P|P)
Cost(N|N)
perfcurve
Ejemplo: 'Cost',[0 0.7;0.3 0]
Tipos de datos: single
| double
'Alpha'
— Nivel de significanciaNivel de significancia para los límites de confianza, especificado como el par separado por comas que consta de y un valor escalar en el intervalo 0 a 1. calcula 100*(1 – ) por ciento para , , , y para un nivel de confianza de 1 – .'Alpha'
perfcurve
αlímites de confianza puntualesX
Y
T
AUC
α
Ejemplo: especifica límites de confianza del 99%'Alpha',0.01
Tipos de datos: single
| double
'Weights'
— Pesos de observaciónPesos de observación, especificados como el par separado por comas que consta de y un vector de valores escalares no negativos.'Weights'
Este vector debe tener tantos elementos como o hacer.scores
labels
Si y están en matrices de celdas y necesita suministrar , las ponderaciones deben estar en una matriz de celdas también.scores
labels
Weights
En este caso, cada elemento debe ser un vector numérico con tantos elementos como el elemento correspondiente en .Weights
scores
Por ejemplo, .numel(weights{1}) == numel(scores{1})
Cuando calcula los límites de , y o confianza mediante la validación cruzada, utiliza estos pesos de observación en lugar de los recuentos de observación.perfcurve
X
Y
T
Cuando calcula los límites de confianza mediante bootstrap, toma muestras de observaciones con reemplazo, utilizando estos pesos como probabilidades de muestreo multinomial.perfcurve
NN
El valor predeterminado es un vector de 1s o una matriz de celdas en la que cada elemento es un vector de 1s.
Tipos de datos: single
| double
| cell
'NBoot'
— Número de réplicas de arranqueNúmero de réplicas de arranque para el cálculo de límites de confianza, especificado como el par separado por comas que consta de y un entero positivo.'NBoot'
El valor predeterminado 0 significa que los límites de confianza no se calculan.
Si y son matrices de celdas, este parámetro debe ser 0 porque puede usar la validación cruzada o el arranque para calcular los límites de confianza.labels
scores
perfcurve
Ejemplo: 'NBoot',500
Tipos de datos: single
| double
'BootType'
— Tipo de intervalo de confianza parabootci
'bca'
(predeterminado) | 'norm
| 'per'
| 'cper'
| 'stud'
Tipo de intervalo de confianza que se va a utilizar para calcular los límites de confianza, especificado como el par separado por comas que consta de y uno de los siguientes:bootci
'BootType'
— Método de percentil corregido y acelerado corregido'bca'
o — Intervalo aproximado normal con sesgo arrancado y error estándar'norm
'normal'
o — Método porcentual'per'
'percentile'
o — Método de percentil corregido por sesgo'cper'
'corrected percentile'
o — Intervalo de confianza estudiantil'stud'
'student'
Ejemplo: 'BootType','cper'
'BootArg'
— Argumentos de entrada opcionales parabootci
{'Nbootstd',nbootstd}
| {'Stderr',stderr}
Argumentos de entrada opcionales para calcular límites de confianza, especificados como el par separado por comas que consta de argumentos de par nombre-valor de .bootci
'BootArg'
{'Nbootstd',nbootstd}
{'Stderr',stderr}
bootci
Al calcular los intervalos de confianza de arranque retoje ( is ), puede especificar adicionalmente o, nombre-valor, argumentos de par de , mediante .'BootType'
'student'
'Nbootstd'
'Stderr'
bootci
'BootArg'
estima el error estándar de las estadísticas de arranque utilizando bootstrap con muestras de datos. es un entero positivo y su valor predeterminado es 100.'BootArg',{'Nbootstd',nbootstd}
nbootstd
nbootstd
evalúa el error estándar de las estadísticas de arranque mediante una función definida por el usuario que toma como argumento de entrada. es un identificador de función.'BootArg',{'Stderr',stderr}
stderr
[1:numel(scores)]'
stderr
Ejemplo: 'BootArg',{'Nbootstd',nbootstd}
Tipos de datos: cell
'Options'
— Opciones para controlar el cálculo de los intervalos de confianza[]
(predeterminado) | estructura devuelta porstatset
Opciones para controlar el cálculo de intervalos de confianza, especificados como el par separado por comas que consta de y una matriz de estructura devuelta por .'Options'
statset
Estas opciones requieren . utiliza este argumento solo para calcular límites de confianza puntuales.Parallel Computing Toolbox™perfcurve
Para calcular estos límites, debe pasar matrices de celdas para o establecer en un entero positivo.labels
scores
NBoot
Esta tabla resume las opciones disponibles.
Opción | Descripción |
---|---|
'UseParallel' |
|
'UseSubstreams' |
|
'Streams' |
Un objeto o una matriz de celdas de dichos objetos.
En ese caso, utilice una matriz de celdas del mismo tamaño que el grupo paralelo. Si un grupo paralelo no está abierto, debe proporcionar una única secuencia de números aleatorios. |
Si es y es , entonces la longitud de debe ser igual al número de trabajadores utilizados por .'UseParallel'
true
'UseSubstreams'
false
'Streams'
perfcurve
Si un grupo paralelo ya está abierto, la longitud es el tamaño del grupo paralelo.'Streams'
Si un grupo paralelo aún no está abierto, es posible que se abra un grupo por usted, en función de la instalación y las preferencias.MATLAB® Para garantizar resultados más predecibles, utilice y cree explícitamente un grupo paralelo antes de invocar y establecer .parpool
(Parallel Computing Toolbox)perfcurve
'Options',statset('UseParallel',true)
Ejemplo: 'Options',statset('UseParallel',true)
Tipos de datos: struct
X
— -coordenadas para la curva de rendimientoxfpr
(predeterminado) | Matriz -by-3m-coordenadas para la curva de rendimiento, devueltas como un vector o una matriz -by-3.xm De forma predeterminada, los valores son la tasa de falsos positivos, FPR (fallout o 1 – especificidad).X
Para cambiar , utilice el argumento de par nombre-valor.X
XCrit
Si no calcula el archivo , o si los calcula mediante el promedio vertical, entonces es un vector.perfcurve
límites de confianza puntualesX
Si calcula los límites de confianza mediante el promedio de umbral, entonces es una matriz -by-3, donde está el número de valores de umbral fijo.perfcurve
X
mm La primera columna de contiene el valor medio.X
La segunda y tercera columnas contienen el límite inferior y el límite superior, respectivamente, de los límites de confianza puntuales.
Y
— -coordenadas para la curva de rendimientoytpr
(predeterminado) | Matriz -by-3m-coordenadas para la curva de rendimiento, devueltas como un vector o una matriz -by-3.ym De forma predeterminada, los valores son la tasa positiva verdadera, TPR (recuperación o sensibilidad).Y
Para cambiar , utilice el argumento de par nombre-valor.Y
YCrit
Si no calcula el , entonces es un vector.perfcurve
límites de confianza puntualesY
Si calcula los límites de confianza, entonces es una matriz -by-3, donde está el número de valores fijos o umbrales (valores).perfcurve
Y
mmX
T
La primera columna de contiene el valor medio.Y
La segunda y tercera columnas contienen el límite inferior y el límite superior, respectivamente, de los límites de confianza puntuales.
T
— Umbrales en las puntuaciones del clasificadorUmbrales en las puntuaciones del clasificador para los valores calculados de y , devueltos como vector o matriz -by-3.X
Y
m
Si no calcula el archivo , o los calcula mediante el promedio de umbral, entonces es un vector.perfcurve
límites de confianza puntualesT
Si calcula los límites de confianza mediante el promedio vertical, es una matriz -by-3, donde está el número de valores fijos.perfcurve
T
mmX
La primera columna de contiene el valor medio.T
La segunda y tercera columnas contienen el límite inferior y el límite superior, respectivamente, de los límites de confianza puntuales.
Para cada umbral, es el recuento de observaciones positivas verdaderas con puntuaciones mayores o iguales a este umbral, y es el recuento de observaciones falsas positivas con puntuaciones mayores o iguales a este umbral. define los recuentos negativos y , de forma similar.TP
FP
perfcurve
TN
FN
A continuación, la función ordena los umbrales en el orden descendente que corresponde al orden ascendente de los recuentos positivos.
Para los umbrales distintos que se encuentran en la matriz de puntuaciones, devuelve el archivo , y matrices con + 1 filas. establece elementosmperfcurve
X
Y
T
mperfcurve
T(2:m+1)
a los umbrales distintos y replica .T(1)
T(2)
Por convención, representa el umbral más alto y calcula los valores correspondientes de y para y .T(1)
'reject all'
perfcurve
X
Y
TP = 0
FP = 0
El valor es el umbral más bajo para el cual y .T(end)
'accept all'
TN = 0
FN = 0
AUC
— Zona bajo la curvaArea debajo de la curva ( ) para los valores calculados de y , devueltos como un valor escalar o un vector 3 por 1.AUC
X
Y
Si no calcula el valor , es un valor escalar.perfcurve
límites de confianza puntualesAUC
Si calcula los límites de confianza mediante el promedio vertical, es un vector de 3 por 1.perfcurve
AUC
La primera columna de contiene el valor medio.AUC
La segunda y tercera columnas contienen el límite inferior y el límite superior, respectivamente, del límite de confianza.
Para un clasificador perfecto, AUC n.o 1. Para un clasificador que asigna aleatoriamente observaciones a las clases, AUC a 0,5.
Si establece en (valor predeterminado), se calcula mediante los valores devueltos.XVals
'all'
perfcurve
AUC
X
Y
Si es una matriz numérica, calcula el uso y los valores de todas las puntuaciones distintas del intervalo, que se especifican mediante los elementos más pequeños y más grandes de .XVals
perfcurve
AUC
X
Y
XVals
Más precisamente, busca valores para todos los umbrales distintos como si estuvieran establecidos en , y, a continuación, utiliza un subconjunto de estos (con los valores correspondientes) entre y para calcular .perfcurve
X
XVals
'all'
Y
min(XVals)
max(XVals)
AUC
utiliza aproximación trapezoidal para estimar el área.perfcurve
Si el primer o último valor de o son s, a continuación, los elimina para permitir el cálculo de .X
Y
NaN
perfcurve
AUC
Esto se encarga de los criterios que producen s para el especial o umbrales, por ejemplo, el valor predictivo positivo (VPP) o el valor predictivo negativo (NPV).NaN
'reject all'
'accept all'
OPTROCPT
— Punto de funcionamiento óptimo de la curva ROCPunto de funcionamiento óptimo de la curva ROC, devuelto como una matriz 1 por 2 con valores de tasa de falsos positivos (FPR) y tasa positiva verdadera (TPR) para el punto de operación ROC óptimo.
calcula solo para la curva ROC estándar y se establece en s de lo contrario.perfcurve
OPTROCPT
NaN
Para obtener el punto de funcionamiento óptimo para la curva ROC, primero encuentra la pendiente,perfcurve
S
Cost( ) es el costo de clasificar erróneamente una clase positiva como una clase negativa.NP Cost( ) es el costo de clasificar erróneamente una clase negativa como una clase positiva.PN
Y.P = TP + FNN = TN + FP Son los recuentos totales de instancias en la clase positiva y negativa, respectivamente.
a continuación, encuentra el punto de funcionamiento óptimo moviendo la línea recta con pendiente desde la esquina superior izquierda de la gráfica ROC ( , ) hacia abajo y hacia la derecha, hasta que se interseca la curva ROC.perfcurve
SFPR = 0
TPR = 1
SUBY
— Valores para subclases negativasValores para subclases negativas, devueltos como una matriz.
Si especifica solo una clase negativa, entonces es idéntica a .SUBY
Y
Si especifica clases negativas, es una matriz de size -by- , donde está el número de valores devueltos para y , y es el número de clases negativas. calcula los valores sumando recuentos en todas las clases negativas.kSUBY
mkmX
Y
kperfcurve
Y
da valores del criterio para cada clase negativa por separado.SUBY
Y
Para cada clase negativa, coloca una nueva columna y la rellena con valores para true negative (TN) y false positive (FP) contados solo para esta clase.perfcurve
SUBY
Y
SUBYNAMES
— Nombres de clase negativosNombres de clase negativos, devueltos como una matriz de celdas.
Si proporciona una matriz de entrada de nombres de clase negativos, , , copia los nombres en .NegClass
perfcurve
SUBYNAMES
Si no proporciona , se extrae de las etiquetas de entrada.NegClass
perfcurve
SUBYNAMES
El orden de es el mismo que el orden de las columnas en .SUBYNAMES
SUBY
Es decir, es para la clase negativa, es para la clase negativa, y así sucesivamente.SUBY(:,1)
SUBYNAMES{1}
SUBY(:,2)
SUBYNAMES{2}
Si proporciona matrices de celdas para y , o si establece en un entero positivo, devuelve límites de confianza puntuales para , , , y .labels
scores
NBoot
perfcurve
X
Y
T
AUC
No puede proporcionar matrices de celdas para y establecer se establece en un entero positivo al mismo tiempo.labels
scores
NBoot
remuestrea los datos para calcular los límites de confianza mediante la validación cruzada o el arranque.perfcurve
Validación cruzada: si proporciona matrices de celdas para y , a continuación, utiliza la validación cruzada y trata los elementos de las matrices de celdas como pliegues de validación cruzada. puede ser una matriz de celdas de vectores numéricos, vectores lógicos, matrices de caracteres, matrices de celdas de vectores de caracteres o vectores categóricos.labels
scores
perfcurve
labels
Todos los elementos deben tener el mismo tipo. puede ser una matriz de celdas de vectores numéricos.labels
scores
Las matrices de celdas para y deben tener el mismo número de elementos.labels
scores
El número de etiquetas en la celda de debe ser igual al número de puntuaciones en la celda de cualquiera en el rango de 1 al número de elementos en .jlabels
jscores
jscores
Bootstrap — Si establece un entero positivo , genera réplicas de arranque para calcular límites de confianza puntuales.NBoot
nperfcurve
n Si utiliza o para establecer el criterio para o en una función anónima, puede calcular los límites de confianza solo mediante bootstrap.XCrit
YCrit
X
Y
perfcurve
estima los límites de confianza utilizando uno de dos métodos:perfcurve
Promediado vertical (VA): estima los límites de confianza en y en valores fijos de .perfcurve
Y
T
X
Es decir, toma muestras de las curvas ROC para valores fijos, promedia los valores y valores correspondientes y calcula los errores estándar.perfcurve
X
Y
T
Puede utilizar el argumento de par nombre-valor para corregir los valores de los límites de confianza de cálculo.XVals
X
Si no especifica , calcula los límites de confianza en todos los valores.XVals
perfcurve
X
Promedio de umbral (TA): toma muestras de las curvas ROC en umbrales fijos para la puntuación de clase positiva, promedia los valores y los valores correspondientes y estima los límites de confianza.perfcurve
T
X
Y
Puede utilizar el argumento de par nombre-valor para utilizar este método para calcular límites de confianza.TVals
Si establece o no especifica o , devuelve , , y valores para todas las puntuaciones y calcula los límites de confianza puntuales para y mediante el promedio de umbral.TVals
'all'
TVals
XVals
perfcurve
X
Y
T
Y
X
Cuando se calculan los límites de confianza, es una matriz -by-3, donde está el número de valores fijos o umbrales (valores).Y
mmX
T
La primera columna de contiene el valor medio.Y
La segunda y tercera columnas contienen el límite inferior y el límite superior, respectivamente, de los límites de confianza puntuales. es un vector de fila con tres elementos, siguiendo la misma convención.AUC
Si calcula los límites de confianza mediante VA, entonces es una matriz -by-3 y es un vector de columna.perfcurve
T
mX
Si utiliza TA, entonces es una matriz -by-3 y es un vector de columna.perfcurve
X
mT
devuelve límites de confianza puntuales.perfcurve
No devuelve una banda de confianza simultánea para toda la curva.
[1] T. Fawcett. “ROC Graphs: Notes and Practical Considerations for Researchers”, 2004.
[2] Zweig, M., and G. Campbell. “Receiver-Operating Characteristic (ROC) Plots: A Fundamental Evaluation Tool in Clinical Medicine.” Clin. Chem. 1993, 39/4, pp. 561–577 .
[3] Davis, J., and M. Goadrich. “The Relationship Between Precision-Recall and ROC Curves.” Proceedings of ICML ’06, 2006, pp. 233–240.
[4] Moskowitz, C., and M. Pepe. “Quantifying and comparing the predictive accuracy of continuous prognostic factors for binary outcomes.” Biostatistics, 2004, 5, pp. 113–127.
[5] Huang, Y., M. Pepe, and Z. Feng. “Evaluating the Predictiveness of a Continuous Marker.” U. Washington Biostatistics Paper Series, 2006, 250–261.
[6] Briggs, W., and R. Zaretzki. “The Skill Plot: A Graphical Technique for Evaluating Continuous Diagnostic Tests.” Biometrics, 2008, 63, pp. 250 – 261.
[7] R. Bettinger. “Cost-Sensitive Classifier Selection Using the ROC Convex Hull Method.” SAS Institute.
Para ejecutar en paralelo, establezca la opción en .'UseParallel'
true
Establezca el campo de la estructura de opciones en using y especifique el argumento de par nombre-valor en la llamada a esta función.'UseParallel'
true
statset
'Options'
Por ejemplo:'Options',statset('UseParallel',true)
Para obtener más información, consulte el argumento de par nombre-valor.'Options'
Para obtener más información general sobre la informática paralela, consulte .Run MATLAB Functions with Automatic Parallel Support (Parallel Computing Toolbox)
Existe una versión modificada de este ejemplo en su sistema. ¿Prefiere abrir esta versión?
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
Select web siteYou can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.