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.

CompactClassificationECOC

Modelo compacto multiclase para máquinas de vectores de soporte (SVMs) y otros clasificadores

Descripción

es una versión compacta del modelo de códigos de salida de corrección de errores multiclase (ECOC).CompactClassificationECOC El clasificador compacto no incluye los datos utilizados para entrenar el modelo ECOC multiclase. Por lo tanto, no puede realizar determinadas tareas, como la validación cruzada, mediante el clasificador compacto. Utilice un modelo ECOC compacto de varias clases para tareas como clasificar nuevos datos ().Predecir

Creación

Puede crear un modelo de dos maneras:CompactClassificationECOC

  • Cree un modelo ECOC compacto a partir de un modelo entrenado utilizando la función de objeto.ClassificationECOCcompact

  • Cree un modelo compacto de ECOC utilizando la función y especificando el argumento de par nombre-valor como,, a u objeto, o una matriz de celdas de dichos objetos.fitcecoc'Learners''linear''kernel'templateLineartemplateKernel

Propiedades

expandir todo

Después de crear un objeto de modelo, puede utilizar la notación de puntos para acceder a sus propiedades.CompactClassificationECOC Para ver un ejemplo, vea.Tren y validación cruzada clasificador ECOC

ECOC Properties

Aprendizaje binario entrenado, especificado como un vector de celda de objetos de modelo. El número de alumnos binarios depende del número de clases y del diseño de codificación.Y

El software se entrena según el problema binario especificado por.BinaryLearner{j}CodingMatrix(:,j) Por ejemplo, para el aprendizaje multiclase con los alumnos de SVM, cada elemento de es un clasificador.BinaryLearnersCompactClassificationSVM

Tipos de datos: cell

Función de pérdida binaria del alumno, especificada como un vector de caracteres que representa el nombre de la función de pérdida.

Si entrena utilizando a los estudiantes binarios que utilizan diferentes funciones de pérdida, a continuación, el software establece en.BinaryLoss'hamming' Para aumentar potencialmente la precisión, especifique una función de pérdida binaria distinta de la predeterminada durante un cálculo de predicción o pérdida mediante el argumento de par nombre-valor de o.'BinaryLoss'Predecirloss

Tipos de datos: char

Códigos de asignación de clases para los alumnos binarios, especificados como una matriz numérica. es un-por-matriz, donde es el número de clases y es el número de estudiantes binarios.CodingMatrixKLKL

Los elementos de are,, o, y los valores corresponden a asignaciones de clase dicottomosas.CodingMatrix–101 En esta tabla se describe cómo el alumno asigna observaciones en clase a una clase dicottóloga correspondiente al valor de.jiCodingMatrix(i,j)

ValorAsignación de clase dicottóloga
–1El alumno asigna observaciones en clase a una clase negativa.ji
0Antes del entrenamiento, el alumno elimina las observaciones de la clase del conjunto de datos.ji
1El alumno asigna observaciones en clase a una clase positiva.ji

Tipos de datos: double | single | int8 | int16 | int32 | int64

Pesos de aprendizaje binarios, especificados como un vector de fila numérico. La longitud de es igual al número de estudiantes binarios ().LeanerWeightslength(Mdl.BinaryLearners)

es la suma de los pesos de observación que utiliza el alumno binario para entrenar a su clasificador.LearnerWeights(j)j

El software se utiliza para ajustarse a las probabilidades posteriores minimizando la divergencia Kullback-Leibler.LearnerWeights El software ignora cuando utiliza el método de programación cuadrática para estimar las probabilidades posteriores.LearnerWeights

Tipos de datos: double | single

Otras propiedades de clasificación

Índices predictores categóricos, especificados como un vector de enteros positivos. contiene valores de índice correspondientes a las columnas de los datos del predictor que contienen predictores categóricos.CategoricalPredictors Si ninguno de los predictores es categórico, entonces esta propiedad está vacía ().[]

Tipos de datos: single | double

Etiquetas de clase únicas utilizadas en el entrenamiento, especificadas como una matriz categórica o de caracteres, Vector lógico o numérico, o matriz de celdas de vectores de caracteres. tiene el mismo tipo de datos que las etiquetas de clase.ClassNamesY (The software treats string arrays as cell arrays of character vectors.) también determina el orden de la clase.ClassNames

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

Esta propiedad es de solo lectura.

Costos de clasificación errónea, especificados como una matriz numérica cuadrada. tiene filas y columnas, donde está el número de clases.CostoKK

es el costo de clasificar un punto en la clase si su clase verdadera es.Cost(i,j)ji El orden de las filas y columnas corresponde al orden de las clases en.CostoClassNames

incorpora los costos de clasificación errónea de manera diferente entre los diferentes tipos de estudiantes binarios.fitcecoc

Tipos de datos: double

Nombres de predictores ampliados, especificados como una matriz de vectores de caracteres de celda.

Si el modelo utiliza codificación para variables categóricas, incluye los nombres que describen las variables expandidas.ExpandedPredictorNames De lo contrario, es el mismo que.ExpandedPredictorNamesPredictorNames

Los nombres predictores en orden de su aparición en los Datos predictores, especificados como una matriz de celdas de vectores de caracteres.X La longitud de es igual al número de columnas en.PredictorNamesX

Tipos de datos: cell

Esta propiedad es de solo lectura.

Probabilidades de clase anteriores, especificadas como un vector numérico. tiene tantos elementos como el número de clases en, y el orden de los elementos corresponde al orden de las clases en.PriorClassNamesClassNames

incorpora los costos de clasificación errónea de manera diferente entre los diferentes tipos de estudiantes binarios.fitcecoc

Tipos de datos: double

Nombre de variable de respuesta, especificado como un vector de caracteres.

Tipos de datos: char

Función de transformación de puntuación para aplicar a las puntuaciones previstas, especificadas como un nombre de función o un identificador de función.

Para cambiar la función de transformación de puntuación a function, por ejemplo, utilice la notación de puntos.

  • Para una función incorporada, ingrese este código y reemplace function con un valor en la tabla.

    Mdl.ScoreTransform = 'function';

    ValorDescripción
    'doublelogit'1/(1 +e–2x)
    'invlogit'log (/(1 –))xx
    'ismax'Establece la puntuación de la clase con la puntuación más grande y establece las puntuaciones de todas las demás clases para10
    'logit'1/(1 +ex)
    O'none''identity'(sin transformación)x
    'sign'– 1 para < 0 0 para = 0 1 para > 0x
    x
    x
    'symmetric'2 – 1x
    'symmetricismax'Establece la puntuación de la clase con la puntuación más grande y establece las puntuaciones de todas las demás clases para1–1
    'symmetriclogit'2/(1 +ex) – 1

  • Para una función o una función que defina, introduzca su manejador de funciones.MATLAB®

    Mdl.ScoreTransform = @function;

    function debe aceptar una matriz (las puntuaciones originales) y devolver una matriz del mismo tamaño (las puntuaciones transformadas).

Tipos de datos: char | function_handle

Funciones del objeto

compareHoldoutCompare las precisiones de dos modelos de clasificación utilizando nuevos datos
discardSupportVectorsDeseche los vectores de soporte de los estudiantes binarios de SVM lineales en el modelo ECOC
BordeBorde de clasificación para el modelo de códigos de salida de corrección de errores multiclase (ECOC)
lossPérdida de clasificación para el modelo de códigos de salida de corrección de errores multiclase (ECOC)
MargenLos márgenes de clasificación para el modelo de códigos de salida de corrección de errores multiclase (ECOC)
PredecirClasifique las observaciones utilizando el modelo de códigos de salida de corrección de errores multiclase (ECOC)
selectModelsElija un subconjunto de modelos ECOC multiclase compuestos de estudiantes binariosClassificationLinear
updateActualice los parámetros del modelo para la generación de código

Ejemplos

contraer todo

Reduzca el tamaño de un modelo ECOC completo eliminando los datos de entrenamiento. Los modelos completos de ECOC (modelos) poseen los datos de entrenamiento.ClassificationECOC Para mejorar la eficiencia, utilice un clasificador más pequeño.

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);

Entrenar un modelo ECOC utilizando clasificadores binarios SVM. Estandarice los Datos predictores mediante una plantilla SVM y especifique el orden de las clases.t Durante el entrenamiento, el software utiliza los valores predeterminados para las opciones vacías en.t

t = templateSVM('Standardize',true); Mdl = fitcecoc(X,Y,'Learners',t,'ClassNames',classOrder);

es un modelo.MdlClassificationECOC

Reduzca el tamaño del modelo ECOC.

CompactMdl = compact(Mdl)
CompactMdl =    classreg.learning.classif.CompactClassificationECOC              ResponseName: 'Y'     CategoricalPredictors: []                ClassNames: [setosa    versicolor    virginica]            ScoreTransform: 'none'            BinaryLearners: {3x1 cell}              CodingMatrix: [3x3 double]     Properties, Methods  

es un modelo. no almacena todas las propiedades que almacena.CompactMdlCompactClassificationECOCCompactMdlMdl En particular, no almacena los datos de entrenamiento.

Muestra la cantidad de memoria que utiliza cada clasificador.

whos('CompactMdl','Mdl')
  Name            Size            Bytes  Class                                                  Attributes    CompactMdl      1x1             14364  classreg.learning.classif.CompactClassificationECOC                 Mdl             1x1             27439  ClassificationECOC                                                

El modelo ECOC completo () es aproximadamente el doble del tamaño del modelo compacto ECOC ().MdlCompactMdl

Para etiquetar las nuevas observaciones de forma eficaz, puede eliminarlas del área de trabajo de MATLAB® y, a continuación, pasar y nuevos valores predictores.MdlCompactMdlPredecir

Entrenar y validar de forma cruzada un clasificador ECOC utilizando diferentes estudiantes binarios y el diseño de codificación uno contra todos.

Cargue el conjunto de datos de iris de Fisher. Especifique los datos del predictor y los datos de respuesta.XY Determine los nombres de clase y el número de clases.

load fisheriris X = meas; Y = species; classNames = unique(species(~strcmp(species,''))) % Remove empty classes 
classNames = 3x1 cell array
    {'setosa'    }
    {'versicolor'}
    {'virginica' }

K = numel(classNames) % Number of classes
K = 3 

Puede utilizar para especificar el orden de las clases durante el entrenamiento.classNames

Para un diseño de codificación uno contra todos, este ejemplo tiene = 3 estudiantes binarios.K Especifique las plantillas para los alumnos binarios de tal que:

  • Los alumnos binarios 1 y 2 son clasificadores Bayes ingenuos. Por defecto, cada predictor es condicionalmente, normalmente distribuido dada su etiqueta.

  • El aprendizaje binario 3 es un clasificador de SVM. Especifique si desea utilizar el kernel gaussiano.

rng(1);  % For reproducibility tNB = templateNaiveBayes(); tSVM = templateSVM('KernelFunction','gaussian'); tLearners = {tNB tNB tSVM};

y son objetos de plantilla para el aprendizaje de Bayes y SVM ingenuos, respectivamente.tNBtSVM Los objetos indican las opciones que se usarán durante el entrenamiento. La mayoría de sus propiedades están vacías, excepto las especificadas por argumentos de par nombre-valor. Durante el entrenamiento, el software rellena las propiedades vacías con sus valores predeterminados.

Entrenar y validar de forma cruzada un clasificador ECOC utilizando las plantillas de aprendizaje binario y el diseño de codificación uno contra todos. Especifique el orden de las clases. De forma predeterminada, los clasificadores Bayes ingenuos utilizan probabilidades posteriores como puntuaciones, mientras que los clasificadores de SVM utilizan Distancias desde el límite de decisión. Por lo tanto, para agregar los alumnos binarios, debe especificar que se ajusten a las probabilidades posteriores.

CVMdl = fitcecoc(X,Y,'ClassNames',classNames,'CrossVal','on',...     'Learners',tLearners,'FitPosterior',true);

es un modelo con validación cruzada.CVMdlClassificationPartitionedECOC De forma predeterminada, el software implementa la validación cruzada de 10 veces. Las puntuaciones a través de los estudiantes binarios tienen la misma forma (es decir, son probabilidades posteriores), por lo que el software puede agregar correctamente los resultados de las clasificaciones binarias.

Inspeccione uno de los pliegues entrenados utilizando la notación de puntos.

CVMdl.Trained{1}
ans =    classreg.learning.classif.CompactClassificationECOC              ResponseName: 'Y'     CategoricalPredictors: []                ClassNames: {'setosa'  'versicolor'  'virginica'}            ScoreTransform: 'none'            BinaryLearners: {3x1 cell}              CodingMatrix: [3x3 double]     Properties, Methods  

Cada pliegue es un modelo entrenado en el 90% de los datos.CompactClassificationECOC

Puede acceder a los resultados de los alumnos binarios mediante la notación de puntos y la indexación de celdas. Muestre el clasificador de SVM entrenado (el tercer aprendiz binario) en el primer pliegue.

CVMdl.Trained{1}.BinaryLearners{3}
ans =    classreg.learning.classif.CompactClassificationSVM              ResponseName: 'Y'     CategoricalPredictors: []                ClassNames: [-1 1]            ScoreTransform: '@(S)sigmoid(S,-4.016268e+00,-3.243751e-01)'                     Alpha: [33x1 double]                      Bias: -0.1345          KernelParameters: [1x1 struct]            SupportVectors: [33x4 double]       SupportVectorLabels: [33x1 double]     Properties, Methods  

Calcule el error de generalización.

genError = kfoldLoss(CVMdl)
genError = 0.0333 

En promedio, el error de generalización es aproximadamente del 3%.

Algoritmos

expandir todo

Referencias

[1] Fürnkranz, Johannes. “Round Robin Classification.” Journal of Machine Learning Research, Vol. 2, 2002, pp. 721–747.

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

Capacidades ampliadas

Introducido en R2014b