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.

kfoldEdge

Borde de clasificación para el modelo ECOC validado con validación cruzada

Descripción

ejemplo

edge = kfoldEdge(CVMdl) Devuelve el obtenido por el modelo ECOC validado por la Cruz ().borde de clasificaciónClassificationPartitionedECOCCVMdl Para cada pliegue, calcula la arista de clasificación para las observaciones de pliegue de validación utilizando un modelo ECOC entrenado en observaciones de pliegue de formación. contiene ambos conjuntos de observaciones.kfoldEdgeCVMdl.X

ejemplo

edge = kfoldEdge(CVMdl,Name,Value) Devuelve el borde de clasificación con opciones adicionales especificadas por uno o más argumentos de par nombre-valor. Por ejemplo, especifique el número de pliegues, el esquema de decodificación o el 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); rng(1); % For reproducibility

Entrenar y validar de forma cruzada un modelo ECOC utilizando clasificadores binarios de máquinas de vectores de soporte (SVM). Estandarice los Datos predictores mediante una plantilla SVM y especifique el orden de la clase.

t = templateSVM('Standardize',1); CVMdl = fitcecoc(X,Y,'CrossVal','on','Learners',t,'ClassNames',classOrder);

es un modelo.CVMdlClassificationPartitionedECOC De forma predeterminada, el software implementa la validación cruzada de 10 veces. Puede especificar un número diferente de pliegues mediante el argumento de par nombre-valor.'KFold'

Calcule el promedio de los bordes.

edge = kfoldEdge(CVMdl)
edge = 0.4825 

Como alternativa, puede obtener los bordes por pliegue especificando el par nombre-valor en.'Mode','individual'kfoldEdge

La arista de clasificación es una medida relativa de la calidad del clasificador. Para determinar qué pliegues funcionan mal, visualice los bordes de cada pliegue.

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); rng(1); % For reproducibility

Entrenar un modelo ECOC utilizando clasificadores binarios SVM. Utilice la validación cruzada de 8 veces, estandarice los predictores mediante una plantilla SVM y especifique el orden de la clase.

t = templateSVM('Standardize',1); CVMdl = fitcecoc(X,Y,'KFold',8,'Learners',t,'ClassNames',classOrder);

Calcule la arista de clasificación para cada pliegue.

edges = kfoldEdge(CVMdl,'Mode','individual')
edges = 8×1

    0.4790
    0.4872
    0.4260
    0.5301
    0.5064
    0.4575
    0.4860
    0.4687

Los bordes tienen magnitudes similares en los pliegues. Los pliegues que funcionan mal tienen bordes pequeños con respecto a los otros pliegues.

Para devolver el borde de clasificación promedio a través de los pliegues que funcionan bien, especifique el argumento de par nombre-valor.'Folds'

El borde del clasificador mide el promedio de los márgenes del clasificador. Una forma de realizar la selección de características es comparar los bordes de validación cruzada de varios modelos. Basado únicamente en este criterio, el clasificador con el borde más grande es el mejor clasificador.

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

Defina los dos conjuntos de datos siguientes.

  • contiene todos los predictores.fullX

  • contiene las cotas de pétalo.partX

fullX = X; partX = X(:,3:4);

Para cada conjunto de predictores, entrenar y validar de forma cruzada un modelo ECOC utilizando clasificadores binarios SVM. Estandarice los predictores mediante una plantilla SVM y especifique el orden de la clase.

t = templateSVM('Standardize',1); CVMdl = fitcecoc(fullX,Y,'CrossVal','on','Learners',t,...     'ClassNames',classOrder); PCVMdl = fitcecoc(partX,Y,'CrossVal','on','Learners',t,...     'ClassNames',classOrder);

y son modelos.CVMdlPCVMdlClassificationPartitionedECOC De forma predeterminada, el software implementa la validación cruzada de 10 veces.

Estime la arista para cada clasificador.

fullEdge = kfoldEdge(CVMdl)
fullEdge = 0.4825 
partEdge = kfoldEdge(PCVMdl)
partEdge = 0.4951 

Los dos modelos tienen bordes comparables.

Argumentos de entrada

contraer todo

Modelo ECOC validado de forma cruzada, especificado como modelo.ClassificationPartitionedECOC Puede crear un modelo de dos maneras:ClassificationPartitionedECOC

  • Pase un modelo de ECOC entrenado () a.ClassificationECOCcrossval

  • Entrenar un modelo ECOC utilizando y especificar cualquiera de estos argumentos de par nombre-valor de validación cruzada:,,,, o.fitcecoc'CrossVal''CVPartition''Holdout''KFold''Leaveout'

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 binaria del alumno.kfoldEdge(CVMdl,'BinaryLoss','hinge')'hinge'

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'

Pliegue índices para la predicción, especificado como el par separado por comas que consta de y un vector numérico de enteros positivos.'Folds' Los elementos de deben estar dentro del rango de a.Folds1CVMdl.KFold

El software utiliza sólo los pliegues especificados en para la predicción.Folds

Ejemplo: 'Folds',[1 4 10]

Tipos de datos: single | double

Nivel de agregación para la salida, especificado como el par separado por comas que consta de y o.'Mode''average''individual'

Esta tabla describe los valores.

ValorDescripción
'average'La salida es un promedio escalar sobre todos los pliegues.
'individual'La salida es un vector de longitud que contiene un valor por pliegue, donde es el número de pliegues.kk

Ejemplo: 'Mode','individual'

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

Argumentos de salida

contraer todo

, devuelto como un vector de columna escalar o numérico numérico.La arista de clasificación

Si es, entonces es el borde de clasificación promedio sobre todos los pliegues.Mode'average'Borde De lo contrario, es un vector de columna numérico de-por-1 que contiene el borde de clasificación para cada pliegue, donde es el número de pliegues.Bordekk

Más acerca de

contraer todo

Clasificación perimetral

Es la media ponderada de la.borde de clasificaciónmárgenes de clasificación

Una forma de elegir entre varios clasificadores, por ejemplo para realizar la selección de características, es elegir el clasificador que produce el borde más grande.

Margen de clasificación

El es, para cada observación, la diferencia entre la pérdida negativa para la clase verdadera y la pérdida negativa máxima entre las clases falsas.margen de clasificación Si los márgenes están en la misma escala, entonces sirven como una medida de confianza de clasificación. Entre los clasificadores múltiples, los que producen mayores márgenes son mejores.

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