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.

loss

Pérdida de clasificación para el modelo de códigos de salida de corrección de errores multiclase (ECOC)

Descripción

L = loss(Mdl,tbl,ResponseVarName) Devuelve la clasificación loss (), un escalar que representa qué tan bien el modelo de códigos de salida de corrección de errores multiclase (ECOC) entrenado clasifica los datos del predictor en comparación con las etiquetas de clase verdaderas en.LMdltbltbl.ResponseVarName De forma predeterminada, usa la para calcular.losserror de clasificaciónL

L = loss(Mdl,tbl,Y) Devuelve la pérdida de clasificación para los Datos predictores en la tabla y las etiquetas de clase verdaderas en.tblY

ejemplo

L = loss(Mdl,X,Y) Devuelve la pérdida de clasificación para los Datos predictores en la matriz y las etiquetas de clase verdaderas en.XY

ejemplo

L = loss(___,Name,Value) especifica opciones utilizando uno o más argumentos de par nombre-valor además de cualquiera de las combinaciones de argumento de entrada en sintaxis anteriores. Por ejemplo, puede especificar un esquema de decodificación, una función de pérdida de clasificación y un nivel de verbosidad.

Ejemplos

contraer todo

Cargue el conjunto de datos de iris de Fisher. Especifique los datos del predictor, los datos de respuesta y el orden de las clases.XYY

load fisheriris X = meas; Y = categorical(species); classOrder = unique(Y); % Class order rng(1); % For reproducibility

Entrenar un modelo ECOC utilizando clasificadores binarios SVM. Especifique una muestra de retención del 15%, estandarice los predictores mediante una plantilla de SVM y especifique el orden de la clase.

t = templateSVM('Standardize',true); PMdl = fitcecoc(X,Y,'Holdout',0.15,'Learners',t,'ClassNames',classOrder); Mdl = PMdl.Trained{1};           % Extract trained, compact classifier

es un modelo.PMdlClassificationPartitionedECOC Tiene la propiedad, una matriz de 1 por 1 celda que contiene el modelo que el software entrenado utilizando el conjunto de entrenamiento.TrainedCompactClassificationECOC

Estime el error de clasificación de muestra de prueba, que es la pérdida de clasificación predeterminada.

testInds = test(PMdl.Partition);  % Extract the test indices XTest = X(testInds,:); YTest = Y(testInds,:); L = loss(Mdl,XTest,YTest)
L = 0 

El modelo ECOC clasifica correctamente todos los iris en la muestra de ensayo.

Determine la calidad de un modelo ECOC utilizando una función de pérdida personalizada que considere la pérdida binaria mínima para cada observación.

Cargue el conjunto de datos de iris de Fisher. Especifique los datos del predictor, los datos de respuesta y el orden de las clases.XYY

load fisheriris X = meas; Y = categorical(species); classOrder = unique(Y);  % Class order rng(1) % For reproducibility

Entrenar un modelo ECOC utilizando clasificadores binarios SVM. Especifique una muestra de retención del 15%, estandarice los predictores mediante una plantilla de SVM y defina el orden de la clase.

t = templateSVM('Standardize',true); PMdl = fitcecoc(X,Y,'Holdout',0.15,'Learners',t,'ClassNames',classOrder); Mdl = PMdl.Trained{1};           % Extract trained, compact classifier

es un modelo.PMdlClassificationPartitionedECOC Tiene la propiedad, una matriz de 1 por 1 celda que contiene el modelo que el software entrenado utilizando el conjunto de entrenamiento.TrainedCompactClassificationECOC

Cree una función que tome la pérdida mínima para cada observación y, a continuación, promedia las pérdidas mínimas para todas las observaciones. corresponde a la salida de.SNegLossPredecir

lossfun = @(~,S,~,~)mean(min(-S,[],2));

Calcule la pérdida personalizada de muestra de prueba.

testInds = test(PMdl.Partition);  % Extract the test indices XTest = X(testInds,:); YTest = Y(testInds,:); loss(Mdl,XTest,YTest,'LossFun',lossfun)
ans = 0.0033 

La pérdida binaria mínima promedio para las observaciones de la muestra de prueba es.0.0033

Argumentos de entrada

contraer todo

Modelo ECOC multiclase completo o compacto, especificado como objeto o modelo.ClassificationECOCCompactClassificationECOC

Para crear un modelo ECOC completo o compacto, consulte o.ClassificationECOCCompactClassificationECOC

Datos de ejemplo, especificados como una tabla. Cada fila de corresponde a una observación, y cada columna corresponde a una variable predictora.tbl Opcionalmente, puede contener columnas adicionales para la variable de respuesta y ponderaciones de observación. debe contener todos los predictores utilizados para entrenar.tbltblMdl No se permiten las variables de varias columnas ni matrices de celdas que no sean matrices de celdas de vectores de caracteres.

Si entrena con datos de ejemplo contenidos en a, los datos de entrada paraMdltable loss también debe estar en una tabla.

Nota

Si contiene modelos de clasificación de kernel o lineales (o objetos de modelo), no puede especificar datos de ejemplo en un.Mdl.BinaryLearnersClassificationLinearClassificationKerneltable En su lugar, pase una matriz () y etiquetas de clase ().XY

Cuando se entrena, suponga que establece para un objeto de plantilla especificado en el argumento de par nombre-valor de.Mdl'Standardize',true'Learners'fitcecoc En este caso, para el aprendizaje binario correspondiente, el software estandariza las columnas de los nuevos Datos predictores utilizando los medios correspondientes y las desviaciones estándar en.jMdl.BinaryLearner{j}.MuMdl.BinaryLearner{j}.Sigma

Tipos de datos: table

Nombre de variable de respuesta, especificado como el nombre de una variable en.tbl Si contiene la variable de respuesta utilizada para entrenar, no es necesario especificar.tblMdlResponseVarName

Si especifica, debe hacerlo como un vector de caracteres o un escalar de cadena.ResponseVarName Por ejemplo, si la variable de respuesta se almacena como, a continuación, especifique as.tbl.yResponseVarName'y' De lo contrario, el software trata todas las columnas de, incluidos, como predictores.tbltbl.y

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

Datos de predictor, especificados como una matriz numérica.

Cada fila de corresponde a una observación, y cada columna corresponde a una variable.X Las variables en las columnas de deben ser las mismas que las variables que entrenaron al clasificador.XMdl

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

Cuando se entrena, suponga que establece para un objeto de plantilla especificado en el argumento de par nombre-valor de.Mdl'Standardize',true'Learners'fitcecoc En este caso, para el aprendizaje binario correspondiente, el software estandariza las columnas de los nuevos Datos predictores utilizando los medios correspondientes y las desviaciones estándar en.jMdl.BinaryLearner{j}.MuMdl.BinaryLearner{j}.Sigma

Tipos de datos: double | single

Etiquetas de clase, especificadas como una matriz categórica, de caracteres o de cadena, un vector lógico o numérico o una matriz de vectores de caracteres. debe tener el mismo tipo de datos que.YMdl.ClassNames (The software treats string arrays as cell arrays of character vectors.)

El número de filas en debe ser igual al número de filas en o.YtblX

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

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: especifica como la función de pérdida de aprendizaje binaria y el identificador de función personalizada como la función de pérdida general.loss(Mdl,X,Y,'BinaryLoss','hinge','LossFun',@lossfun)'hinge'@lossfun

Función de pérdida binaria de aprendizaje, especificada como el par separado por comas que consta de un nombre de función de pérdida incorporada o un identificador de función.'BinaryLoss'

  • Esta tabla describe las funciones incorporadas, donde yj es una etiqueta de clase para un alumno binario determinado (en el conjunto {– 1, 1, 0}), sj es la partitura para la observación, y (jgyj,sj) es la fórmula de pérdida binaria.

    ValorDescripciónPuntuación de dominio(gyj,sj)
    'binodeviance'Desviación binomial(– ∞, ∞)log [1 + exp (– 2yjsj)]/[2log (2)]
    'exponential'Exponencial(– ∞, ∞)exp (–yjsj)/2
    'hamming'Hamming[0, 1] o (– ∞, ∞)[1 – signo (yjsj)]/2
    'hinge'Bisagra(– ∞, ∞)Max (0,1 – yjsj)/2
    'linear'Lineal(– ∞, ∞)1 yjsj)/2
    'logit'Logística(– ∞, ∞)log [1 + exp (–yjsj)]/[2log (2)]
    'quadratic'Cuadrática[0,1]1 yj(2sj – 1)]2/2

    El software normaliza las pérdidas binarias para que la pérdida es 0,5 cuando yj = 0. Además, el software calcula la pérdida binaria media para cada clase.

  • Para una función de pérdida binaria personalizada, por ejemplo, especifique su identificador de función.customFunction'BinaryLoss',@customFunction

    tiene este formulario: donde:customFunction

    bLoss = customFunction(M,s)

    • es la matriz-por-codificación almacenada en.MKLMdl.CodingMatrix

    • es el vector 1 por fila de las puntuaciones de clasificación.sL

    • es la pérdida de clasificación.bLoss Este escalar agrega las pérdidas binarias para cada alumno en una clase determinada. Por ejemplo, puede usar la pérdida binaria media para agregar la pérdida sobre los alumnos de cada clase.

    • es el número de clases.K

    • es el número de estudiantes binarios.L

    Para obtener un ejemplo de cómo pasar una función de pérdida binaria personalizada, consulte.Predecir etiquetas de muestra de prueba de modelo ECOC utilizando la función de pérdida binaria personalizada

El valor predeterminado depende de los rangos de puntuación devueltos por los alumnos binarios.BinaryLoss Esta tabla describe algunos valores predeterminados basados en las suposiciones dadas.BinaryLoss

presunciónValor predeterminado
Todos los alumnos binarios son SVMs o modelos de clasificación de kernel o lineales de alumnos de SVM.'hinge'
Todos los estudiantes binarios son conjuntos entrenados por o.AdaboostM1GentleBoost'exponential'
Todos los estudiantes binarios son conjuntos entrenados por.LogitBoost'binodeviance'
Todos los estudiantes binarios son modelos lineales o de clasificación de kernel de los estudiantes de regresión logística. O, especifique para predecir las probabilidades posteriores de clase estableciendo en.'FitPosterior',truefitcecoc'quadratic'

Para comprobar el valor predeterminado, utilice la notación de puntos para mostrar la propiedad del modelo entrenado en la línea de comandos.BinaryLoss

Ejemplo: 'BinaryLoss','binodeviance'

Tipos de datos: char | string | function_handle

Esquema de decodificación que agrega las pérdidas binarias, especificadas como el par separado por comas que consta de y o.'Decoding''lossweighted''lossbased' Para obtener más información, consulte.Pérdida binaria

Ejemplo: 'Decoding','lossbased'

Función de pérdida, especificada como el par separado por comas que consta de y o un identificador de función.'LossFun''classiferror'

  • Especifique la función incorporada.'classiferror' En este caso, la función de pérdida es la proporción de observaciones mal clasificadas.error de clasificación

  • O, especifique su propia función utilizando la notación de identificador de función.

    Supongamos que es el tamaño de la muestra y es el número de clases.n = size(X,1)K Su función debe tener la firma, donde:lossvalue = lossfun(C,S,W,Cost)

    • El argumento de salida es un escalar.lossvalue

    • Especifique el nombre de la función (lossfun).

    • es una matriz lógica con filas que indican la clase a la que pertenece la observación correspondiente.CnK El orden de las columnas corresponde al orden de la clase.Mdl.ClassNames

      Construya estableciendo si la observación está en la clase, para cada fila.CC(p,q) = 1pq Establezca todos los demás elementos de la fila en.p0

    • es una matriz numérica de valores de pérdida negados para las clases.SnK Cada fila corresponde a una observación. El orden de las columnas corresponde al orden de la clase.Mdl.ClassNames La entrada se asemeja al argumento de salida de.SNegLossPredecir

    • es un vector numérico de pesos de observación de-por-1.Wn Si pasa, el software normaliza sus elementos para sumar.W1

    • es una matriz numérica de costes de clasificación errónea.CostoKK Por ejemplo, especifica un coste de 0 para la clasificación correcta y 1 para la clasificación errónea.Cost = ones(K) – eye(K)

    Especifique la función utilizando.'LossFun',@lossfun

Tipos de datos: char | string | function_handle

Dimensión de observación de Datos predictores, especificada como el par separado por comas que consta de y o. deben contener modelos.'ObservationsIn''columns''rows'Mdl.BinaryLearnersClassificationLinear

Nota

Si orienta la matriz predictora para que las observaciones se correspondan con las columnas y las especifique, puede experimentar una reducción significativa en el tiempo de ejecución.'ObservationsIn','columns'

Opciones de estimación, especificadas como el par separado por comas que consta de una matriz de estructura devuelta por.'Options'statset

Para invocar la computación paralela:

  • Necesitas una licencia.Parallel Computing Toolbox™

  • Especificar.'Options',statset('UseParallel',true)

Nivel de verbosidad, especificado como el par separado por comas que consta de y o. controla el número de mensajes de diagnóstico que el software muestra en la ventana de comandos.'Verbose'01Verbose

Si es, entonces el software no visualiza los mensajes de diagnóstico.Verbose0 De lo contrario, el software muestra mensajes de diagnóstico.

Ejemplo: 'Verbose',1

Tipos de datos: single | double

Ponderaciones de observación, especificadas como el par separado por comas que consta de un vector numérico o el nombre de una variable en.'Weights'tbl Si proporciona pesos, calcula la pérdida ponderada.loss

Si se especifica como un vector numérico, el tamaño de debe ser igual al número de filas en o.WeightsWeightsXtbl

Si especifica como el nombre de una variable en, debe hacerlo como un vector de caracteres o escalar de cadena.Weightstbl Por ejemplo, si las ponderaciones se almacenan como, a continuación, especifique as.tbl.wWeights'w' De lo contrario, el software trata todas las columnas de, incluidos, como predictores.tbltbl.w

Si no especifica su propia función de pérdida (utilizando), el software normaliza para resumir hasta el valor de la probabilidad anterior en la clase respectiva.LossFunWeights

Tipos de datos: single | double | char | string

Argumentos de salida

contraer todo

Pérdida de clasificación, devuelta como un vector de fila o escalar numérico. es una medida de calidad de generalización o de reenvío.L Su interpretación depende de la función de pérdida y el esquema de ponderación, pero en general, los mejores clasificadores producen valores de pérdida de clasificación más pequeños.

Si contiene modelos, entonces es un 1-por-Vector, donde es el número de fortalezas de regularización en los modelos de clasificación lineal ().Mdl.BinaryLearnersClassificationLinearLnumel(Mdl.BinaryLearners{1}.Lambda) El valor es la pérdida para el modelo entrenado mediante la fuerza de regularización.L(j)Mdl.BinaryLearners{1}.Lambda(j)

De lo contrario, es un valor escalar.L

Más acerca de

contraer todo

Error de clasificación

Es una medida de error de clasificación binaria que tiene la formaerror de clasificación

L=j=1nwjejj=1nwj,

Dónde:

  • Wj es el peso de la observación.j El software renormaliza los pesos para sumar a 1.

  • ej = 1 si la clase de observación pronosticada difiere de su clase verdadera, y 0 en caso contrario.j

En otras palabras, el error de clasificación es la proporción de observaciones clasificadas erróneamente por el clasificador.

Pérdida binaria

A es una función de la puntuación de clase y clasificación que determina qué tan bien un alumno binario clasifica una observación en la clase.pérdida binaria

Supongamos lo siguiente:

  • Mkj es Element (,) de la matriz de diseño de codificación (es decir, el código correspondiente a la clase de aprendizaje binario).kjMkj

  • sj es la puntuación de aprendizaje binario para una observación.j

  • es la función de pérdida binaria.g

  • k^ es la clase pronosticada para la observación.

En, la clase que produce la suma mínima de las pérdidas binarias sobre los estudiantes binarios determina la clase pronosticada de una observación, es decir,decodificación basada en pérdidas[Escalera et al.]

k^=argminkj=1L|mkj|g(mkj,sj).

En, la clase que produce el promedio mínimo de las pérdidas binarias sobre los estudiantes binarios determina la clase pronosticada de una observación, es decir,decodificación ponderada por pérdida[Escalera et al.]

k^=argminkj=1L|mkj|g(mkj,sj)j=1L|mkj|.

sugieren que la decodificación ponderada por pérdida mejora la precisión de la clasificación manteniendo los valores de pérdida para todas las clases en el mismo rango dinámico.Allwein et al.

En esta tabla se resumen las funciones de pérdida admitidas, donde yj es una etiqueta de clase para un alumno binario determinado (en el conjunto {– 1, 1, 0}), sj es la partitura para la observación, y (jgyj,sj).

ValorDescripciónPuntuación de dominio(gyj,sj)
'binodeviance'Desviación binomial(– ∞, ∞)log [1 + exp (– 2yjsj)]/[2log (2)]
'exponential'Exponencial(– ∞, ∞)exp (–yjsj)/2
'hamming'Hamming[0, 1] o (– ∞, ∞)[1 – signo (yjsj)]/2
'hinge'Bisagra(– ∞, ∞)Max (0,1 – yjsj)/2
'linear'Lineal(– ∞, ∞)1 yjsj)/2
'logit'Logística(– ∞, ∞)log [1 + exp (–yjsj)]/[2log (2)]
'quadratic'Cuadrática[0,1]1 yj(2sj – 1)]2/2

El software normaliza las pérdidas binarias de tal forma que la pérdida es de 0,5 cuando yj = 0 y agregados con el promedio de los alumnos binarios.[Allwein et al.]

No confunda la pérdida binaria con la pérdida de clasificación general (especificada por el argumento de par nombre-valor de las funciones de objeto y), que mide qué tan bien se comporta un clasificador ECOC como un todo.'LossFun'lossPredecir

Referencias

[1] Allwein, E., R. Schapire, and Y. Singer. “Reducing multiclass to binary: A unifying approach for margin classifiers.” Journal of Machine Learning Research. Vol. 1, 2000, pp. 113–141.

[2] Escalera, S., O. Pujol, and P. Radeva. “On the decoding process in ternary error-correcting output codes.” IEEE Transactions on Pattern Analysis and Machine Intelligence. Vol. 32, Issue 7, 2010, pp. 120–134.

[3] Escalera, S., O. Pujol, and P. Radeva. “Separability of ternary codes for sparse designs of error-correcting output codes.” Pattern Recogn. Vol. 30, Issue 3, 2009, pp. 285–297.

Capacidades ampliadas

Introducido en R2014b