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.

compareHoldout

Compare las precisiones de dos modelos de clasificación utilizando nuevos datos

Descripción

evalúa estadísticamente las precisiones de dos modelos de clasificación.compareHoldout La función compara primero sus etiquetas predichas con las etiquetas verdaderas y, a continuación, detecta si la diferencia entre las tasas de clasificación errónea es estadísticamente significativa.

Puede determinar si las precisiones de los modelos de clasificación difieren o si un modelo funciona mejor que otro. puede llevar a cabo varias variaciones, incluyendo la prueba asintótica, la prueba condicional exacta y la prueba de valor medio.compareHoldoutPrueba de McNemarp Para, las pruebas disponibles incluyen una prueba de Chi-cuadrada (requiere) y una prueba de relación de verosimilitud.evaluación de costo-sensibleOptimization Toolbox™

ejemplo

h = compareHoldout(C1,C2,T1,T2,ResponseVarName) Devuelve la decisión de prueba de probar la hipótesis nula de que los modelos de clasificación entrenados y tienen la misma precisión para predecir las etiquetas de clase verdaderas en la variable.C1C2ResponseVarName La hipótesis alternativa es que las etiquetas tienen una precisión desigual.

El primer modelo de clasificación utiliza los datos del predictor y el segundo modelo de clasificación utiliza los datos del predictor en.C1T1C2T2 Las tablas y deben contener la misma variable de respuesta pero pueden contener diferentes conjuntos de predictores.T1T2 De forma predeterminada, el software realiza la prueba McNemar de valor medio para comparar las precisiones.p

= indica que rechaza la hipótesis nula en el nivel de significancia del 5%. = indica que no se rechaza la hipótesis nula en el nivel del 5%.h1h0

Los siguientes son ejemplos de pruebas que puede llevar a cabo:

  • Compare las precisiones de un modelo de clasificación simple y un modelo que es más complejo pasando el mismo conjunto de Datos predictores (es decir, =).T1T2

  • Compare las precisiones de dos modelos potencialmente diferentes utilizando dos conjuntos de predictores potencialmente diferentes.

  • Realice varios tipos de selección de características. Por ejemplo, puede comparar la precisión de un modelo entrenado utilizando un conjunto de predictores con la precisión de uno entrenado en un subconjunto o un conjunto diferente de esos predictores. Puede elegir el conjunto de predictores arbitrariamente o utilizar una técnica de selección de características como PCA o selección secuencial de entidades (ver y).pcasequentialfs

h = compareHoldout(C1,C2,T1,T2,Y) Devuelve la decisión de prueba de probar la hipótesis nula de que los modelos de clasificación entrenados y tienen la misma precisión para predecir las etiquetas de clase verdaderas.C1C2Y La hipótesis alternativa es que las etiquetas tienen una precisión desigual.

El primer modelo de clasificación utiliza los Datos predictores y el segundo modelo de clasificación utiliza los Datos predictores.C1T1C2T2 De forma predeterminada, el software realiza la prueba McNemar de valor medio para comparar las precisiones.p

ejemplo

h = compareHoldout(C1,C2,X1,X2,Y) Devuelve la decisión de prueba de probar la hipótesis nula de que los modelos de clasificación entrenados y tienen la misma precisión para predecir las etiquetas de clase verdaderas.C1C2Y La hipótesis alternativa es que las etiquetas tienen una precisión desigual.

El primer modelo de clasificación utiliza los Datos predictores y el segundo modelo de clasificación utiliza los Datos predictores.C1X1C2X2 De forma predeterminada, el software realiza la prueba McNemar de valor medio para comparar las precisiones.p

ejemplo

h = compareHoldout(___,Name,Value) especifica opciones utilizando uno o más argumentos de par nombre-valor además de las combinaciones de argumento de entrada en sintaxis anteriores. Por ejemplo, puede especificar el tipo de hipótesis alternativa, especificar el tipo de prueba y suministrar una matriz de costes.

ejemplo

[h,p,e1,e2] = compareHoldout(___) Devuelve el valor-Value para la prueba de hipótesis () y los respectivos de cada conjunto de etiquetas de clase pronosticadas (y) utilizando cualquiera de los argumentos de entrada de las sintaxis anteriores.pplas pérdidas de clasificacióne1e2

Ejemplos

contraer todo

Entrenar dos clasificadores de vecino más cercanos, uno utilizando un subconjunto de los predictores utilizados para el otro.k Realice una prueba estadística comparando las precisiones de los dos modelos en un conjunto de pruebas.

Cargue el conjunto de datos.carsmall

load carsmall

Cree dos tablas de datos de entrada, donde la segunda tabla excluye el predictor.Acceleration Especifique como la variable de respuesta.Model_Year

T1 = table(Acceleration,Displacement,Horsepower,MPG,Model_Year); T2 = T1(:,2:end);

Cree una partición que divida los datos en conjuntos de pruebas y entrenamiento. Mantenga el 30% de los datos para las pruebas.

rng(1)  % For reproducibility CVP = cvpartition(Model_Year,'holdout',0.3); idxTrain = training(CVP);   % Training-set indices idxTest = test(CVP);    % Test-set indices

es un objeto de partición de validación cruzada que especifica los conjuntos de entrenamiento y prueba.CVP

Entrenar los modelos ClassificationKNN utilizando los datos y.T1T2

C1 = fitcknn(T1(idxTrain,:),'Model_Year'); C2 = fitcknn(T2(idxTrain,:),'Model_Year');

y son modelos entrenados.C1C2ClassificationKNN

Pruebe si los dos modelos tienen la misma precisión predictiva en el conjunto de pruebas.

h = compareHoldout(C1,C2,T1(idxTest,:),T2(idxTest,:),'Model_Year')
h = logical
   0

indica que no se rechace la hipótesis nula de que los dos modelos tengan la misma precisión predictiva.h = 0

Entrenar dos modelos de clasificación utilizando diferentes algoritmos. Realice una prueba estadística comparando las tasas de clasificación errónea de los dos modelos en un conjunto de pruebas.

Cargue el conjunto de datos.ionosphere

load ionosphere

Cree una partición que divida uniformemente los datos en conjuntos de entrenamiento y pruebas.

rng(1)                             % For reproducibility CVP = cvpartition(Y,'holdout',0.5); idxTrain = training(CVP);           % Training-set indices  idxTest = test(CVP);                % Test-set indices

es un objeto de partición de validación cruzada que especifica los conjuntos de entrenamiento y prueba.CVP

Entrena un modelo SVM y un conjunto de 100 árboles de clasificación en bolsas. Para el modelo SVM, especifique si desea utilizar el kernel de la función de base radial y un procedimiento heurístico para determinar la escala del kernel.

C1 = fitcsvm(X(idxTrain,:),Y(idxTrain),'Standardize',true, ...     'KernelFunction','RBF','KernelScale','auto'); t = templateTree('Reproducible',true);  % For reproducibility of random predictor selections C2 = fitcensemble(X(idxTrain,:),Y(idxTrain),'Method','Bag', ...     'Learners',t);

es un modelo entrenado. es un modelo entrenado.C1ClassificationSVMC2ClassificationBaggedEnsemble

Pruebe si los dos modelos tienen precisiones predictivas iguales. Utilice los mismos datos de predictor de conjunto de pruebas para cada modelo.

h = compareHoldout(C1,C2,X(idxTest,:),X(idxTest,:),Y(idxTest))
h = logical
   0

indica que no se rechace la hipótesis nula de que los dos modelos tengan la misma precisión predictiva.h = 0

Entrena dos modelos de clasificación usando el mismo algoritmo, pero ajusta un hiperparámetro para hacer el algoritmo más complejo. Realice una prueba estadística para evaluar si el modelo más sencillo tiene mejor precisión en los datos de prueba que el modelo más complejo.

Cargue el conjunto de datos.ionosphere

load ionosphere;

Cree una partición que divida uniformemente los datos en conjuntos de entrenamiento y pruebas.

rng(1);                             % For reproducibility CVP = cvpartition(Y,'holdout',0.5); idxTrain = training(CVP);           % Training-set indices  idxTest = test(CVP);                % Test-set indices

es un objeto de partición de validación cruzada que especifica los conjuntos de entrenamiento y prueba.CVP

Entrenar dos modelos SVM: uno que utiliza un kernel lineal (el predeterminado para la clasificación binaria) y otro que utiliza el kernel de la función de base radial. Utilice la escala de kernel predeterminada de 1.

C1 = fitcsvm(X(idxTrain,:),Y(idxTrain),'Standardize',true); C2 = fitcsvm(X(idxTrain,:),Y(idxTrain),'Standardize',true,...     'KernelFunction','RBF');

y son modelos entrenados.C1C2ClassificationSVM

Pruebe la hipótesis nula de que el modelo más simple () es más preciso que el modelo más complejo ().C1C2 Dado que el tamaño del conjunto de pruebas es grande, realice la prueba asintótica de McNemar y compare los resultados con la prueba de valor medio (el valor predeterminado de prueba no sensible al costo).p Solicitud de valores devueltos y tasas de clasificación errónea.p

Asymp = zeros(4,1); % Preallocation MidP = zeros(4,1);   [Asymp(1),Asymp(2),Asymp(3),Asymp(4)] = compareHoldout(C1,C2,...     X(idxTest,:),X(idxTest,:),Y(idxTest),'Alternative','greater',...     'Test','asymptotic'); [MidP(1),MidP(2),MidP(3),MidP(4)] = compareHoldout(C1,C2,...     X(idxTest,:),X(idxTest,:),Y(idxTest),'Alternative','greater'); table(Asymp,MidP,'RowNames',{'h' 'p' 'e1' 'e2'})
ans=4×2 table
            Asymp          MidP   
          __________    __________

    h              1             1
    p     7.2801e-09    2.7649e-10
    e1       0.13714       0.13714
    e2       0.33143       0.33143

El valor-Value está cerca de cero para ambas pruebas, proporcionando pruebas sólidas para rechazar la hipótesis nula de que el modelo más simple es menos preciso que el modelo más complejo.p Independientemente de la prueba que especifique, devuelve el mismo tipo de medida de clasificación errónea para ambos modelos.compareHoldout

Para conjuntos de datos con representaciones de clase desequilibradas, o para conjuntos de datos con costes falsos positivos y falsos negativos desequilibrados, puede comparar estadísticamente el rendimiento predictivo de dos modelos de clasificación al incluir una matriz de costes en el análisis.

Cargue el conjunto de datos.arrhythmia Determine las representaciones de clase en los datos.

load arrhythmia; Y = categorical(Y); tabulate(Y);
  Value    Count   Percent       1      245     54.20%       2       44      9.73%       3       15      3.32%       4       15      3.32%       5       13      2.88%       6       25      5.53%       7        3      0.66%       8        2      0.44%       9        9      1.99%      10       50     11.06%      14        4      0.88%      15        5      1.11%      16       22      4.87% 

Hay 16 clases, sin embargo, algunas no están representadas en el conjunto de datos (por ejemplo, clase 13). La mayoría de las observaciones se clasifican como no tener arritmias (clase 1). El conjunto de datos es muy discreto con clases desequilibradas.

Combine todas las observaciones con arritmias (clases 2 a 15) en una clase. Quite esas observaciones con estado de arritmia desconocida (clase 16) del conjunto de datos.

idx = (Y ~= '16'); Y = Y(idx); X = X(idx,:); Y(Y ~= '1') = 'WithArrhythmia'; Y(Y == '1') = 'NoArrhythmia'; Y = removecats(Y);

Cree una partición que divida uniformemente los datos en conjuntos de entrenamiento y pruebas.

rng(1);                             % For reproducibility CVP = cvpartition(Y,'holdout',0.5); idxTrain = training(CVP);           % Training-set indices  idxTest = test(CVP);                % Test-set indices

es un objeto de partición de validación cruzada que especifica los conjuntos de entrenamiento y prueba.CVP

Crear una matriz de costos tal que clasificar erróneamente a un paciente con arritmia en la clase de "no arritmia" es cinco veces peor que clasificar erróneamente a un paciente sin arritmia en la clase de arritmias. Clasificar correctamente no conlleva ningún coste. Las filas indican la clase true y las columnas indican la clase pronosticada. Cuando se realiza un análisis de coste-sensible, una buena práctica es especificar el orden de las clases.

cost = [0 1;5 0]; ClassNames = {'NoArrhythmia','WithArrhythmia'};

Entrenar dos conjuntos de impulso de 50 árboles de clasificación, uno que utiliza AdaBoostM1 y otro que utiliza LogitBoost. Dado que el conjunto de datos contiene valores faltantes, especifique usar divisiones sustitutas. Entrenar los modelos utilizando la matriz de costes.

t = templateTree('Surrogate','on'); numTrees = 50; C1 = fitcensemble(X(idxTrain,:),Y(idxTrain),'Method','AdaBoostM1', ...     'NumLearningCycles',numTrees,'Learners',t, ...     'Cost',cost,'ClassNames',ClassNames); C2 = fitcensemble(X(idxTrain,:),Y(idxTrain),'Method','LogitBoost', ...     'NumLearningCycles',numTrees,'Learners',t, ...     'Cost',cost,'ClassNames',ClassNames);

y son modelos entrenados.C1C2ClassificationEnsemble

Pruebe si el conjunto AdaBoostM1 () y el conjunto LogitBoost () tienen la misma precisión predictiva.C1C2 Suministre la matriz de costes. Llevar a cabo la asintótica, relación de probabilidad, prueba de costo-sensible (el valor predeterminado cuando se pasa en una matriz de costos). Solicitud de valores devueltos y costos de clasificación errónea.p

[h,p,e1,e2] = compareHoldout(C1,C2,X(idxTest,:),X(idxTest,:),Y(idxTest),...     'Cost',cost)
h = logical
   0

p = 0.2094 
e1 = 0.5953 
e2 = 0.4698 

indica que no se rechace la hipótesis nula de que los dos modelos tengan la misma precisión predictiva.h = 0

Reduzca la complejidad del modelo de clasificación seleccionando un subconjunto de variables predictoras (entidades) de un conjunto más grande. A continuación, compare estadísticamente la precisión fuera de la muestra entre los dos modelos.

Cargue el conjunto de datos.ionosphere

load ionosphere;

Cree una partición que divida uniformemente los datos en conjuntos de entrenamiento y pruebas.

rng(1);  % For reproducibility CVP = cvpartition(Y,'holdout',0.5); idxTrain = training(CVP); % Training-set indices  idxTest = test(CVP);      % Test-set indices

es un objeto de partición de validación cruzada que especifica los conjuntos de entrenamiento y prueba.CVP

Entrena un conjunto de 100 árboles de clasificación potenciado usando AdaBoostM1 y todo el conjunto de predictores. Inspeccione la medida de importancia para cada predictor.

t = templateTree('MaxNumSplits',1); % Weak-learner template tree object C2 = fitcensemble(X(idxTrain,:),Y(idxTrain),'Method','AdaBoostM1',...     'Learners',t); predImp = predictorImportance(C2);  figure; bar(predImp); h = gca; h.XTick = 1:2:h.XLim(2)
h =    Axes with properties:               XLim: [-0.2000 35.2000]              YLim: [0 0.0090]            XScale: 'linear'            YScale: 'linear'     GridLineStyle: '-'          Position: [0.1300 0.1100 0.7750 0.8150]             Units: 'normalized'    Show all properties  
title('Predictor Importance'); xlabel('Predictor'); ylabel('Importance measure');

Identifique los cinco predictores principales en términos de su importancia.

[~,idxSort] = sort(predImp,'descend'); idx5 = idxSort(1:5);

Entrena otro conjunto de 100 árboles de clasificación potenciado usando AdaBoostM1 y los cinco predictores con la mayor importancia.

C1 = fitcensemble(X(idxTrain,idx5),Y(idxTrain),'Method','AdaBoostM1',...     'Learners',t);

Pruebe si los dos modelos tienen precisiones predictivas iguales. Especifique los datos de predictor de conjunto de pruebas reducidos para y los datos de predictor de conjunto de pruebas completo para.C1C2

[h,p,e1,e2] = compareHoldout(C1,C2,X(idxTest,idx5),X(idxTest,:),Y(idxTest))
h = logical
   0

p = 0.7744 
e1 = 0.0914 
e2 = 0.0857 

indica que no se rechace la hipótesis nula de que los dos modelos tengan la misma precisión predictiva.h = 0 Este resultado favorece el conjunto más simple,.C1

Argumentos de entrada

contraer todo

Primer modelo de clasificación entrenado, especificado como cualquier objeto de modelo de clasificación entrenado o objeto de modelo de clasificación compacta descrito en esta tabla.

Tipo de modelo entrenadoObjeto de modeloDevuelto por
Árbol de clasificaciónClassificationTreefitctree
El análisis discriminanteClassificationDiscriminantfitcdiscr
Conjunto de modelos de clasificación en bolsasClassificationBaggedEnsemblefitcensemble
Conjunto de modelos de clasificaciónClassificationEnsemblefitcensemble
Códigos de salida de corrección de errores multiclase (ECOC)ClassificationECOCfitcecoc
Nnk ClassificationKNNfitcknn
Naive BayesClassificationNaiveBayesfitcnb
Máquina de vectores de soporte (SVM)ClassificationSVMfitcsvm
El análisis de discriminante compactoCompactClassificationDiscriminantcompact
Compact ECOCCompactClassificationECOCcompact
Conjunto compacto de modelos de clasificaciónCompactClassificationEnsemblecompact
Bayes ingenua compactaCompactClassificationNaiveBayescompact
Compact SVMCompactClassificationSVMcompact
Árbol de clasificación compactaCompactClassificationTreecompact

Segundo modelo de clasificación entrenado, especificado como cualquier objeto de modelo de clasificación entrenado o objeto de modelo de clasificación compacta que sea una opción válida para.C1

Datos de predictor de conjunto de pruebas para el primer modelo de clasificación, especificados como una tabla.C1 Cada fila de corresponde a una observación, y cada columna corresponde a una variable predictora.T1 Opcionalmente, puede contener una columna adicional para la variable de respuesta. debe contener todos los predictores utilizados para entrenar.T1T1C1 No se permiten las variables de varias columnas ni matrices de celdas que no sean matrices de celdas de vectores de caracteres.

y debe tener el mismo número de filas y los mismos valores de respuesta.T1T2 Si y contiene la variable de respuesta utilizada para entrenar y, a continuación, no es necesario especificar o.T1T2C1C2ResponseVarNameY

Tipos de datos: table

Datos de predictor de conjunto de pruebas para el segundo modelo de clasificación, especificados como una tabla.C2 Cada fila de corresponde a una observación, y cada columna corresponde a una variable predictora.T2 Opcionalmente, puede contener una columna adicional para la variable de respuesta. debe contener todos los predictores utilizados para entrenar.T2T2C2 No se permiten las variables de varias columnas ni matrices de celdas que no sean matrices de celdas de vectores de caracteres.

y debe tener el mismo número de filas y los mismos valores de respuesta.T1T2 Si y contiene la variable de respuesta utilizada para entrenar y, a continuación, no es necesario especificar o.T1T2C1C2ResponseVarNameY

Tipos de datos: table

Datos de predictor de conjunto de pruebas para el primer modelo de clasificación, especificados como una matriz numérica.C1

Cada fila de corresponde a una observación (también conocida como una instancia o ejemplo), y cada columna corresponde a una variable (también conocida como un predictor o característica).X1 Las variables utilizadas para entrenar deben componerse.C1X1

El número de filas en y debe ser igual al número de filas en.X1X2Y

Tipos de datos: double | single

Datos de predictor de conjunto de pruebas para el segundo modelo de clasificación, especificados como una matriz numérica.C2

Cada fila de corresponde a una observación (también conocida como una instancia o ejemplo), y cada columna corresponde a una variable (también conocida como un predictor o característica).X2 Las variables utilizadas para entrenar deben componerse.C2X2

El número de filas en y debe ser igual al número de filas en.X2X1Y

Tipos de datos: double | single

Nombre de variable de respuesta, especificado como el nombre de una variable en y.T1T2 Si y contiene la variable de respuesta utilizada para entrenar y, a continuación, no es necesario especificar.T1T2C1C2ResponseVarName

Debe especificar como un vector de caracteres o un escalar de cadena.ResponseVarName Por ejemplo, si la variable de respuesta se almacena como, a continuación, especifíquese como.T1.Response'Response' De lo contrario, el software trata todas las columnas de e, incluidos, como predictores.T1T2Response

La variable de respuesta debe ser una matriz categórica, de caracteres o de cadena, un vector lógico o numérico o una matriz de vectores de caracteres. Si la variable de respuesta es una matriz de caracteres, cada elemento debe corresponder a una fila de la matriz.

Tipos de datos: char | string

Etiquetas de clase verdaderas, especificadas como una matriz categórica, de caracteres o de cadena, Vector lógico o numérico o matriz de celdas de vectores de caracteres.

Al especificar,Y compareHoldout trata todas las variables de las matrices y las tablas y como variables predictoras.X1X2T1T2

Si es una matriz de caracteres, cada elemento debe corresponder a una fila de la matriz.Y

El número de filas de los Datos predictores debe ser igual al número de filas.Y

Tipos de datos: categorical | char | string | logical | single | double | cell

Nota

s, los valores, los vectores de caracteres vacíos (), las cadenas vacías () y los valores indican valores faltantes.NaN<undefined>''""<missing> compareHoldout quita los valores faltantes y las filas correspondientes de y.YX1X2 Además compareHoldout predice las clases si y tienen observaciones faltantes.X1X2

Argumentos de par nombre-valor

Especifique pares de argumentos separados por comas opcionales. es el nombre del argumento y es el valor correspondiente. deben aparecer dentro de las cotizaciones.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como.Name1,Value1,...,NameN,ValueN

Ejemplo: comprueba si el primer conjunto de etiquetas de clase pronosticadas es más preciso que el segundo conjunto, realiza la prueba asintótica de McNemar y penaliza las observaciones de clasificación errónea con la etiqueta true dos veces más que clasificar erróneamente las observaciones con la etiqueta true.compareHoldout(C1,C2,X1,X2,Y,'Alternative','greater','Test','asymptotic','Cost',[0 2;1 0])ClassNames{1}ClassNames{2}

Nivel de significancia de prueba de hipótesis, especificado como el par separado por comas que consta de y un valor escalar en el intervalo (0,1).'Alpha'

Ejemplo: 'Alpha',0.1

Tipos de datos: single | double

Hipótesis alternativa para evaluar, especificada como el par separado por comas que consta de y uno de los valores enumerados en esta tabla.'Alternative'

ValorHipótesis alternativa
predeterminado'unequal'Para predecir, el conjunto de predicciones resultantes de aplicada y aplicada para tener precisiones desiguales.YC1X1C2X2
'greater'Para predecir, el conjunto de predicciones resultantes de aplicado a es más preciso de lo que se aplica.YC1X1C2X2
'less'Para predecir, el conjunto de predicciones resultantes de aplicado a es menos preciso de lo que se aplica.YC1X1C2X2

Ejemplo: 'Alternative','greater'

Nombres de clase, especificados como el par separado por comas que consta de una matriz categórica, carácter o cadena, Vector lógico o numérico, o matriz de celdas de vectores de caracteres.'ClassNames' Debe establecer utilizando el tipo de datos de.ClassNamesY

Si es una matriz de caracteres, cada elemento debe corresponder a una fila de la matriz.ClassNames

Utilizar para:ClassNames

  • Especifique el orden de cualquier dimensión de argumento de entrada que corresponda al orden de la clase. Por ejemplo, se utiliza para especificar el orden de las dimensiones de.ClassNamesCosto

  • Seleccione un subconjunto de clases para realizar pruebas. Por ejemplo, supongamos que el conjunto de todos los nombres de clase distintos en es.Y{'a','b','c'} Para entrenar y probar modelos utilizando observaciones de clases y solo, especifique.'a''c''ClassNames',{'a','c'}

El valor predeterminado es el conjunto de todos los nombres de clase distintos en.Y

Ejemplo: 'ClassNames',{'b','g'}

Tipos de datos: categorical | char | string | logical | single | double | cell

Coste de clasificación errónea, especificado como el par separado por comas consistente en una matriz cuadrada o una matriz de estructura.'Cost'

  • Si especifica la matriz cuadrada, entonces es el costo de clasificar un punto en la clase si su clase verdadera es.CostoCost(i,j)ji Es decir, las filas corresponden a la clase true y las columnas corresponden a la clase pronosticada. Para especificar el orden de la clase de las filas y columnas correspondientes, especifique además el argumento de par nombre-valor.CostoClassNames

  • Si especifica la estructura, debe tener dos campos:SS

    • , que contiene los nombres de clase como una variable del mismo tipo de datos que.S.ClassNamesY Puede utilizar este campo para especificar el orden de las clases.

    • , que contiene la matriz de costes, con las filas y columnas ordenadas como in.S.ClassificationCostsS.ClassNames

Si especifica,Costo compareHoldout no puede realizar pruebas parciales, exactas o de mitad de la prueba.p También debe especificar.'Alternative','unequal','Test','asymptotic' Para las opciones de prueba de coste-sensible, vea el argumento del par nombre-valor.CostTest

Una práctica recomendada es suministrar la misma matriz de costes utilizada para entrenar los modelos de clasificación.

El valor predeterminado es if y if.Cost(i,j) = 1i ~= jCost(i,j) = 0i = j

Ejemplo: 'Cost',[0 1 2 ; 1 0 2; 2 2 0]

Tipos de datos: single | double | struct

Tipo de prueba de coste-sensible, especificado como el par separado por comas que consta de y o.'CostTest''chisquare''likelihood' Si no especifica una matriz de costes mediante el argumento de par nombre-valor, ignora.CostocompareHoldoutCostTest

Esta tabla resume las opciones disponibles para las pruebas de coste-sensibles.

ValorTipo de prueba asintóticaRequisitos
'chisquare'Prueba de Chi-cuadradopara implementarOptimization Toolboxquadprog
'likelihood'Prueba de ratio de verosimilitudNinguno

Para obtener más información, consulte.Pruebas de coste-sensible

Ejemplo: 'CostTest','chisquare'

Prueba para realizar, especificada como el par separado por comas que consta de y, o.'Test''asymptotic''exact''midp'

En esta tabla se resumen las opciones disponibles para las pruebas no sensibles a los costos.

ValorDescripción
'asymptotic'Prueba asintótica McNemar
'exact'La prueba McNemar condicional exacta
predeterminado'midp'Mid-valor McNemar testp

Para obtener más información, consulte.McNemar tests

Para las pruebas de coste-sensible, debe ser.Test'asymptotic' Al especificar el argumento de par nombre-valor y elegir una prueba de coste-sensible mediante el argumento de par nombre-valor, es el valor predeterminado.CostoCostTest'asymptotic'

Ejemplo: 'Test','asymptotic'

Argumentos de salida

contraer todo

Resultado de la prueba de hipótesis, devuelto como un valor lógico.

indica el rechazo de la hipótesis nula en el nivel de significancia.h = 1Alpha

indica que no se ha rechazado la hipótesis nula en el nivel de significancia.h = 0Alpha

Tipos de datos: logical

-valor de la prueba, devuelto como un escalar en el intervalo [0,1]. es la probabilidad de que una estadística de prueba aleatoria sea al menos tan extrema como la estadística de prueba observada, dado que la hipótesis nula es verdadera.pp

estimaciones utilizando la distribución del estadístico de prueba, que varía con el tipo de prueba.compareHoldoutp Para obtener más información sobre las estadísticas de prueba derivadas de las variantes disponibles de la prueba McNemar, consulte.McNemar tests Para obtener más información sobre las estadísticas de prueba derivadas de pruebas de coste-sensible, consulte.Pruebas de coste-sensible

Tipos de datos: double

Pérdida de clasificación, devuelta como un escalar numérico. resume la precisión del primer conjunto de etiquetas de clase que predice las etiquetas de clase verdaderas (). aplica los primeros Datos predictores del conjunto de pruebas () al primer modelo de clasificación () para estimar el primer conjunto de etiquetas de clase.e1YcompareHoldoutX1C1 A continuación, la función compara las etiquetas estimadas para obtener la pérdida de clasificación.Y

Para las pruebas no sensibles al costo, es la tasa de clasificación errónea.e1 Es decir, es la proporción de observaciones mal clasificadas, que es un escalar en el intervalo [0,1].e1

Para las pruebas de coste-sensible, es el costo de clasificación errónea.e1 Es decir, es el promedio ponderado de los costes de clasificación errónea, en el que las ponderaciones son las respectivas proporciones estimadas de observaciones mal clasificadas.e1

Para obtener más información, consulte.Pérdida de clasificación

Tipos de datos: double

Pérdida de clasificación, devuelta como un escalar numérico. resume la precisión del segundo conjunto de etiquetas de clase que predice las etiquetas de clase verdaderas (). aplica el segundo test-Set predictor Data () al segundo modelo de clasificación () para estimar el segundo conjunto de etiquetas de clase.e2YcompareHoldoutX2C2 A continuación, la función compara las etiquetas estimadas para obtener la pérdida de clasificación.Y

Para las pruebas no sensibles al costo, es la tasa de clasificación errónea.e2 Es decir, es la proporción de observaciones mal clasificadas, que es un escalar en el intervalo [0,1].e2

Para las pruebas de coste-sensible, es el costo de clasificación errónea.e2 Es decir, es el promedio ponderado de los costes de clasificación errónea, en el que las ponderaciones son las respectivas proporciones estimadas de observaciones mal clasificadas.e2

Para obtener más información, consulte.Pérdida de clasificación

Tipos de datos: double

Limitaciones

  • no compara los modelos ECOC compuestos por modelos lineales o de clasificación de kernel (es decir, objetos de modelo).compareHoldoutClassificationLinearClassificationKernel Para comparar modelos compuestos de modelos de clasificación de kernel o lineales, utilice en su lugar. ClassificationECOCtestcholdout

  • Del mismo modo, no compara ni modelan objetos.compareHoldoutClassificationLinearClassificationKernel Para comparar estos modelos, utilice en su lugar.testcholdout

Más acerca de

contraer todo

Pruebas de coste-sensible

Conducta cuando el costo de la clasificación errónea está desequilibrado.pruebas de coste-sensible Al realizar un análisis sensible al costo, puede tener en cuenta el desequilibrio de costos cuando entrena los modelos de clasificación y cuando los compara estadísticamente.

Si el costo de la clasificación errónea está desequilibrado, la tasa de clasificación errónea tiende a ser una pérdida de clasificación de rendimiento deficiente. Utilice el coste de clasificación errónea para comparar los modelos de clasificación.

Los costos de clasificación errónea a menudo se desequilibran en las aplicaciones. Por ejemplo, considere la posibilidad de clasificar sujetos basados en un conjunto de predictores en dos categorías: sanas y enfermas. Clasificar erróneamente a un sujeto enfermo como sano plantea un peligro para la vida del sujeto. Sin embargo, clasificar erróneamente a un sujeto sano como enfermo típicamente causa algunos inconvenientes, pero no plantea un peligro significativo. En esta situación, usted asigna costos de clasificación errónea, de manera que clasificar erróneamente a un sujeto enfermo como saludable es más costoso que clasificar erróneamente a un sujeto sano como enfermo.

Las definiciones que siguen resumen las pruebas de coste-sensible. En las definiciones:

  • Nijk Y π^ijk son el número y la proporción estimada de las observaciones de la muestra de prueba con las siguientes características. es la clase true, es la etiqueta asignada por el primer modelo de clasificación y es la etiqueta asignada por el segundo modelo de clasificación.kij El verdadero valor desconocido de π^ijk Es Πijk. El tamaño de muestra del conjunto de pruebas es i,j,knijk=ntest. Además i,j,kπijk=i,j,kπ^ijk=1.

  • Cij es el costo relativo de asignar una etiqueta a una observación con una clase verdadera.ji Cii = 0, Cij ≥ 0 y, para al menos un par (,),ij Cij > 0.

  • Todos los subnumeros toman valores enteros de 1 a través, que es el número de clases.K

  • La diferencia esperada en los costos de clasificación errónea de los dos modelos de clasificación es

    δ=i=1Kj=1Kk=1K(ckickj)πijk.

  • La prueba de hipótesis es

    H0:δ=0H1:δ0.

    Las pruebas de coste-sensible disponibles son apropiadas para las pruebas de dos colas.

Las pruebas asintóticas disponibles que abordan los costos desequilibrados son a y a.prueba de Chi-cuadradoprueba de relación de probabilidad

  • Prueba de Chi-cuadrado: la estadística de prueba de Chi-cuadrado se basa en las estadísticas de prueba de Chi-cuadrado de Pearson y Neyman, pero con un factor de corrección de Laplace para tener en cuenta cualquier Nijk = 0. El estadístico de prueba es

    tχ2=ijk(nijk+1(ntest+K3)π^ijk(1))2nijk+1.

    Si 1Fχ2(tχ2;1)<α, luego rechaceH0.

    • π^ijk(1) se estiman minimizando tχ2 bajo la restricción que = 0.δ

    • Fχ2(x;1) es elχ2 CDF con un grado de libertad evaluado en.x

  • Prueba de relación de probabilidad: la prueba de la relación de probabilidad se basa en Nijk, que son variables aleatorias binomiales con tamaño de muestra Ntest y probabilidad de éxito Πijk. Las variables aleatorias representan el número aleatorio de observaciones con la clase: true, la etiqueta asignada por el primer modelo de clasificación y la etiqueta asignada por el segundo modelo de clasificación.kij Conjuntamente, la distribución de las variables aleatorias es multinomial.

    El estadístico de prueba es

    tLRT=2log[P(i,j,kNijk=nijk;ntest,π^ijk=π^ijk(2))P(i,j,kNijk=nijk;ntest,π^ijk=π^ijk(3))].

    Si 1Fχ2(tLRT;1)<α, luego rechazarH0.

    • π^ijk(2)=nijkntest es el MLE sin restricciones de Πijk.

    • π^ijk(3)=nijkntest+λ(ckickj) es el MLE bajo la hipótesis nula que = 0. es la solución aδλ

      i,j,knijk(ckickj)ntest+λ(ckickj)=0.

    • Fχ2(x;1) es elχ2 CDF con un grado de libertad evaluado en.x

McNemar tests

son pruebas de hipótesis que comparan dos proporciones de población mientras se abordan los problemas resultantes de dos muestras dependientes de pares coincidentes.McNemar tests

Una forma de comparar las precisiones predictivas de dos modelos de clasificación es:

  1. Particionar los datos en conjuntos de entrenamiento y pruebas.

  2. Entrenar ambos modelos de clasificación utilizando el conjunto de entrenamiento.

  3. Predecir etiquetas de clase utilizando el conjunto de pruebas.

  4. Resuma los resultados en una tabla de dos por dos similar a esta figura.

    Nii son el número de pares concordantes, es decir, el número de observaciones que ambos modelos clasifican de la misma manera (correcta o incorrectamente). Nij, ≠, son el número de pares discordantes, es decir, el número de observaciones que los modelos clasifican de manera diferente (correcta o incorrectamente).ij

Las tasas de clasificación errónea para los modelos 1 y 2 son π^2=n2/n Y π^2=n2/nRespectivamente. Una prueba bilateral para comparar la precisión de los dos modelos es

H0:π2=π2H1:π2π2.

La hipótesis nula sugiere que la población exhibe homogeneidad marginal, lo que reduce la hipótesis nula a H0:π12=π21. Además, bajo la hipótesis nula,N12 ~ Binomial (n12 +n21, 0,5).[1]

Estos hechos son la base de las variantes de prueba disponibles de McNemar: las pruebas de, y McNemar.AsintóticaExact-condicionalMid-p-Value Las definiciones que siguen resumen las variantes disponibles.

  • Asintótica: las estadísticas de prueba y las regiones de rechazo de McNemar (para el nivel de significancia) son:α

    • Para las pruebas unilaterales, la estadística de prueba es

      ta1=n12n21n12+n21.

      Si 1Φ(|t1|)<α, donde está el CDF estándar gaussiano, a continuación, rechazarΦH0.

    • Para las pruebas a doble cara, la estadística de prueba es

      ta2=(n12n21)2n12+n21.

      Si 1Fχ2(t2;m)<αDónde Fχ2(x;m) es el Χm2 CDF evaluado y luego rechazarxH0.

    La prueba asintótica requiere una teoría de muestras grandes, concretamente, la aproximación gaussiana a la distribución binomial.

    • El número total de pares discordantes, nd=n12+n21, debe ser mayor que 10 (, CH.[1] 10.1.4).

    • En general, las pruebas asintóticas no garantizan la cobertura nominal. La probabilidad observada de rechazar falsamente la hipótesis nula puede exceder, como se sugiere en los estudios de simulación en.α[18] Sin embargo, la prueba asintótica McNemar funciona bien en términos de poder estadístico.

  • Condicional exacto: las regiones de rechazo y las estadísticas de pruebas de McNemar condicionales exactas (para el nivel de significancia) son (,):α[36][38]

    • Para las pruebas unilaterales, la estadística de prueba es

      t1=n12.

      Si FBin(t1;nd,0.5)<αDónde FBin(x;n,p) es la CDF binomial con el tamaño de la muestra y la probabilidad de éxito evaluadas en, luego rechazannpxH0.

    • Para las pruebas a doble cara, la estadística de prueba es

      t2=min(n12,n21).

      Si FBin(t2;nd,0.5)<α/2, luego rechaceH0.

    La prueba condicional exacta siempre alcanza la cobertura nominal. Los estudios de simulación sugieren que la prueba es conservadora, y luego demuestran que la prueba carece de potencia estadística en comparación con otras variantes.[18] Para muestras de prueba pequeñas o muy discretas, considere la posibilidad de utilizar la prueba de valor medio (, CH.p[1] 3.6.3).

  • Prueba de valor medio: las estadísticas de pruebas de McNemar de valor medio y las regiones de rechazo (para el nivel de significancia) son ():ppα[32]

    • Para las pruebas unilaterales, la estadística de prueba es

      t1=n12.

      Si FBin(t11;n12+n21,0.5)+0.5fBin(t1;n12+n21,0.5)<αDónde FBin(x;n,p) Y fBin(x;n,p) son el binomio CDF y PDF, respectivamente, con el tamaño de la muestra y la probabilidad de éxito evaluadas en, luego rechazannpxH0.

    • Para las pruebas a doble cara, la estadística de prueba es

      t2=min(n12,n21).

      Si FBin(t21;n12+n211,0.5)+0.5fBin(t2;n12+n21,0.5)<α/2, luego rechaceH0.

    La prueba de valor medio aborda el comportamiento demasiado conservador de la prueba condicional exacta.p Los estudios de simulación demuestran que esta prueba alcanza una cobertura nominal y tiene una buena potencia estadística.[18]

Pérdida de clasificación

indicar la precisión de un modelo de clasificación o un conjunto de etiquetas pronosticadas.Las pérdidas de clasificación Dos pérdidas de clasificación son la tasa de clasificación errónea y el costo.

compareHoldout Devuelve las pérdidas de clasificación (ver y) bajo la hipótesis alternativa (es decir, las pérdidas de clasificación sin restricciones).e1e2 Nijk es el número de observaciones de muestra de prueba con la clase: true, la etiqueta asignada por el primer modelo de clasificación y la etiqueta asignada por el segundo modelo de clasificación.kij La proporción estimada correspondiente es π^ijk=nijkntest. El tamaño de muestra del conjunto de pruebas es i,j,knijk=ntest. Los índices se toman de 1 a través, el número de clases.K

  • El, o error de clasificación, es un escalar en el intervalo [0,1] que representa la proporción de observaciones mal clasificadas.tasa de clasificación errónea Es decir, la tasa de clasificación errónea para el primer modelo de clasificación es

    e1=j=1Kk=1Kikπ^ijk.

    Para la tasa de clasificación errónea del segundo modelo de clasificación (e2), cambiar los índices y en la fórmula.ij

    La precisión de clasificación disminuye a medida que la tasa de clasificación errónea aumenta a 1.

  • Es un escalar no negativo que es una medida de la calidad de clasificación en relación con los valores de la matriz de costes especificada.costo de clasificación errónea Su interpretación depende de los costes especificados de la clasificación errónea. El coste de clasificación errónea es el promedio ponderado de los costes de clasificación errónea (especificado en una matriz de costes) en el que las ponderaciones son las respectivas proporciones estimadas de observaciones mal clasificadas.C El coste de clasificación errónea para el primer modelo de clasificación se

    e1=j=1Kk=1Kikπ^ijkcki,

    Dónde Ckj es el costo de clasificar una observación en la clase si su verdadera clase es.jk Para el coste de clasificación errónea del segundo modelo de clasificación (e2), cambiar los índices y en la fórmula.ij

    En general, para una matriz de coste fijo, la precisión de la clasificación disminuye a medida que aumenta el coste de clasificación errónea.

Sugerencias

  • Una forma de realizar la selección de características no sensibles a los costos es:

    1. Entrenar el primer modelo de clasificación () utilizando el conjunto de predictor completo.C1

    2. Entrenar el segundo modelo de clasificación () utilizando el conjunto de predictor reducido.C2

    3. Especifique como Datos predictores de conjunto de pruebas completo y como datos de predictor de conjunto de pruebas reducidos.X1X2

    4. Entrar.compareHoldout(C1,C2,X1,X2,Y,'Alternative','less') Si devuelve, entonces hay suficiente evidencia para sugerir que el modelo de clasificación que utiliza menos predictores funciona mejor que el modelo que utiliza el conjunto de predictor completo.compareHoldout1

    Alternativamente, puede evaluar si hay una diferencia significativa entre las precisiones de los dos modelos. Para realizar esta evaluación, quite la especificación en el paso 4. realiza una prueba bilateral, e indica que no hay suficiente evidencia para sugerir una diferencia en la precisión de los dos modelos.'Alternative','less'compareHoldouth = 0

  • Las pruebas de coste-sensible realizan la optimización numérica, que requiere recursos computacionales adicionales. La prueba de la relación de probabilidad realiza la optimización numérica indirectamente al encontrar la raíz de un multiplicador de Lagrange en un intervalo. Para algunos conjuntos de datos, si la raíz se encuentra cerca de los límites del intervalo, el método puede fallar. Por lo tanto, si usted tiene una licencia, considere la realización de la prueba de Chi-cuadrado sensible al costo en su lugar.Optimization Toolbox Para obtener más información, consulte y.CostTestPruebas de coste-sensible

Funcionalidad alternativa

Para comparar directamente la precisión de dos conjuntos de etiquetas de clase en la predicción de un conjunto de etiquetas de clase verdaderas, utilice.testcholdout

Referencias

[1] Agresti, A. Categorical Data Analysis, 2nd Ed. John Wiley & Sons, Inc.: Hoboken, NJ, 2002.

[2] Fagerlan, M.W., S. Lydersen, and P. Laake. “The McNemar Test for Binary Matched-Pairs Data: Mid-p and Asymptotic Are Better Than Exact Conditional.” BMC Medical Research Methodology. Vol. 13, 2013, pp. 1–8.

[3] Lancaster, H.O. “Significance Tests in Discrete Distributions.” JASA, Vol. 56, Number 294, 1961, pp. 223–234.

[4] McNemar, Q. “Note on the Sampling Error of the Difference Between Correlated Proportions or Percentages.” Psychometrika, Vol. 12, Number 2, 1947, pp. 153–157.

[5] Mosteller, F. “Some Statistical Problems in Measuring the Subjective Response to Drugs.” Biometrics, Vol. 8, Number 3, 1952, pp. 220–226.

Introducido en R2015a