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.

ClassificationPartitionedECOC

Modelo ECOC multiclase validado por Cross para máquinas de vectores de soporte (SVMs) y otros clasificadores

Descripción

es un conjunto de modelos de códigos de salida de corrección de errores (ECOC) formados en pliegues con validación cruzada.ClassificationPartitionedECOC Estimar la calidad de la clasificación de validación cruzada mediante el uso de una o más funciones "kfold":,,, y.kfoldPredictkfoldLosskfoldMarginkfoldEdgekfoldfun

Cada método "kfold" utiliza modelos formados en observaciones de pliegue (en pliegue) de formación para predecir la respuesta para las observaciones de la validación (no se pliegan). Por ejemplo, supongamos que se validan de una validación cruzada con cinco pliegues. En este caso, el software asigna aleatoriamente cada observación en cinco grupos de igual tamaño (aproximadamente). El contiene cuatro de los grupos (aproximadamente 4/5 de los datos), y el contiene el otro grupo (aproximadamente 1/5 de los datos).pliegue de entrenamientopliegue de validación En este caso, la validación cruzada procede de la siguiente manera:

  1. El software entrena el primer modelo (almacenado en) mediante el uso de las observaciones en los últimos cuatro grupos y reserva las observaciones en el primer grupo para la validación.CVMdl.Trained{1}

  2. El software entrena el segundo modelo (almacenado en) mediante el uso de las observaciones en el primer grupo y los últimos tres grupos.CVMdl.Trained{2} El software reserva las observaciones en el segundo grupo para su validación.

  3. El software procede de manera similar para los modelos tercero, cuarto y quinto.

Si valida mediante el uso, el software calcula las predicciones para las observaciones en grupo mediante el modelo TH.kfoldPredictii En Resumen, el software estima una respuesta para cada observación mediante el uso del modelo entrenado sin esa observación.

Creación

Puede crear un modelo de dos maneras:ClassificationPartitionedECOC

  • Cree un modelo ECOC validado de forma cruzada a partir de un modelo ECOC utilizando la función de objeto.crossval

  • Cree un modelo ECOC validado de forma cruzada utilizando la función y especificando uno de los argumentos de par nombre-valor,,,, o.fitcecoc'CrossVal''CVPartition''Holdout''KFold''Leaveout'

Propiedades

expandir todo

Propiedades de validación cruzada

Nombre de modelo validado de forma cruzada, especificado como vector de caracteres.

Por ejemplo, especifica un modelo ECOC validado con validación cruzada.'ECOC'

Tipos de datos: char

Número de pliegues con validación cruzada, especificado como un entero positivo.

Tipos de datos: double

Valores de parámetro de validación cruzada, especificados como un objeto. Los valores de parámetro corresponden a los valores de los argumentos de par nombre-valor utilizados para validar el clasificador ECOC. no contiene parámetros estimados.ModelParameters

Puede acceder a las propiedades del uso de notación de puntos.ModelParameters

Número de observaciones en los datos de entrenamiento, especificado como un escalar numérico positivo.

Tipos de datos: double

Partición de datos que indica cómo el software divide los datos en pliegues de validación cruzada, especificados como un modelo.cvpartition

Clasificadores compactos entrenados en pliegues de validación cruzada, especificados como una matriz de celdas de modelos. tiene células, donde está el número de pliegues.CompactClassificationECOCTrainedkk

Tipos de datos: cell

Ponderaciones de observación utilizadas para validar de forma cruzada el modelo, especificado como un vector numérico. tiene elementos.WNumObservations

El software normaliza las ponderaciones utilizadas para la formación.nansum(W)1

Tipos de datos: single | double

Datos predictores no estandarizados utilizados para validar de forma cruzada el clasificador, especificado como una matriz o tabla numérica.

Cada fila de corresponde a una observación, y cada columna corresponde a una variable.X

Tipos de datos: single | double | table

Etiquetas de clase observadas utilizadas para validar de forma cruzada el modelo, especificado como una matriz categórica o de caracteres, Vector lógico o numérico, o matriz de celdas de vectores de caracteres. tiene elementos y tiene el mismo tipo de datos que el argumento de entrada que se pasa a la validación cruzada del modelo.YNumObservationsYfitcecoc (The software treats string arrays as cell arrays of character vectors.)

Cada fila de representa la clasificación observada de la fila correspondiente de.YX

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

ECOC Properties

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'kfoldPredictkfoldLoss

Tipos de datos: char

Etiquetas de clase de alumno binarias, especificadas como una matriz numérica o.[]

  • Si la matriz de codificación es la misma en todos los pliegues, entonces es una-por-matriz, donde es el número de estudiantes binarios ().BinaryYNumObservationsLLsize(CodingMatrix,2)

    Los elementos de are,, o, y los valores corresponden a asignaciones de clase dicottomosas.BinaryY–101 En esta tabla se describe cómo el alumno asigna la observación a una clase dicottóloga correspondiente al valor de.jkBinaryY(k,j)

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

  • Si la matriz de codificación varía entre pliegues, entonces está vacía ().BinaryY[]

Tipos de datos: double

Códigos que especifican asignaciones de clases para los alumnos binarios, especificados como una matriz numérica o.[]

  • Si la matriz de codificación es la misma en todos los pliegues, entonces es una-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

  • Si la matriz de codificación varía entre pliegues, entonces está vacía ().CodingMatrix[] Puede obtener la matriz de codificación para cada pliegue utilizando la propiedad.Trained Por ejemplo, es la matriz codificadora en el primer pliegue del modelo ECOC validado en cruz.CVMdl.Trained{1}.CodingMatrixCVMdl

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

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

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

kfoldEdgeBorde de clasificación para el modelo ECOC validado con validación cruzada
kfoldLossPérdida de clasificación para el modelo ECOC con validación cruzada
kfoldMarginLos márgenes de clasificación para el modelo ECOC con validación cruzada
kfoldPredictClasifique las observaciones en el modelo ECOC con validación cruzada
kfoldfunFunción de validación cruzada mediante el modelo ECOC validado con validación cruzada

Ejemplos

contraer todo

Valide de forma cruzada un clasificador ECOC con los alumnos binarios de SVM y estime el error de clasificación generalizado.

Cargue el conjunto de datos de iris de Fisher. Especifique los datos del predictor y los datos de respuesta.XY

load fisheriris X = meas; Y = species; rng(1); % For reproducibility

Cree una plantilla SVM y estandarice los predictores.

t = templateSVM('Standardize',true)
t =  Fit template for classification SVM.                       Alpha: [0x1 double]              BoxConstraint: []                  CacheSize: []              CachingMethod: ''                 ClipAlphas: []     DeltaGradientTolerance: []                    Epsilon: []               GapTolerance: []               KKTTolerance: []             IterationLimit: []             KernelFunction: ''                KernelScale: []               KernelOffset: []      KernelPolynomialOrder: []                   NumPrint: []                         Nu: []            OutlierFraction: []           RemoveDuplicates: []            ShrinkagePeriod: []                     Solver: ''            StandardizeData: 1         SaveSupportVectors: []             VerbosityLevel: []                    Version: 2                     Method: 'SVM'                       Type: 'classification'  

es una plantilla de SVM.t La mayoría de las propiedades del objeto de plantilla están vacías. Al entrenar el clasificador ECOC, el software establece las propiedades aplicables a sus valores predeterminados.

Entrenar el clasificador ECOC y especificar el orden de la clase.

Mdl = fitcecoc(X,Y,'Learners',t,...     'ClassNames',{'setosa','versicolor','virginica'});

es un clasificador.MdlClassificationECOC Puede acceder a sus propiedades utilizando la notación de puntos.

Valide mediante validación cruzada con 10 veces.Mdl

CVMdl = crossval(Mdl);

es un clasificador ECOC con validación cruzada.CVMdlClassificationPartitionedECOC

Calcule el error de clasificación generalizada.

genError = kfoldLoss(CVMdl)
genError = 0.0400 

El error de clasificación generalizada es del 4%, lo que indica que el clasificador ECOC generaliza bastante bien.

Entrena un clasificador ECOC de uno contra todos usando un conjunto de árboles de decisión con divisiones sustitutas.GentleBoost Para acelerar el entrenamiento, los predictores numéricos bin y el uso de computación paralela. La discretización solo es válida cuando se utiliza un alumno de árbol.fitcecoc Después del entrenamiento, calcule el error de clasificación utilizando la validación cruzada de 10 veces. Tenga en cuenta que la computación paralela requiere Parallel Computing Toolbox™.

Cargue datos de muestra

Cargue e inspeccione el conjunto de datos.arrhythmia

load arrhythmia [n,p] = size(X)
n = 452 
p = 279 
isLabels = unique(Y); nLabels = numel(isLabels)
nLabels = 13 
tabulate(categorical(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% 

El conjunto de datos contiene predictores y el tamaño de la muestra es relativamente pequeño.279452 De las 16 etiquetas distintas, solo 13 se representan en la respuesta ().Y Cada etiqueta describe varios grados de arritmia, y el 54,20% de las observaciones están en clase.1

Entrena uno contra todos clasificador ECOC

Cree una plantilla de conjunto. Debe especificar al menos tres argumentos: un método, un número de alumnos y el tipo de alumno. En este ejemplo, especifique para el método, para el número de alumnos y una plantilla de árbol de decisión que utiliza divisiones sustitutas porque faltan observaciones.'GentleBoost'100

tTree = templateTree('surrogate','on'); tEnsemble = templateEnsemble('GentleBoost',100,tTree);

es un objeto de plantilla.tEnsemble La mayoría de sus propiedades están vacías, pero el software los rellena con sus valores predeterminados durante el entrenamiento.

Entrena un clasificador ECOC de uno contra todos usando los conjuntos de árboles de decisión como estudiantes binarios. Para acelerar el entrenamiento, utilice el binning y la computación paralela.

  • Binning (): cuando tiene un conjunto de datos de entrenamiento grande, puede acelerar el entrenamiento (una disminución potencial en la precisión) mediante el argumento de par nombre-valor.'NumBins',50'NumBins' Este argumento sólo es válido cuando se utiliza un aprendiz de árbol.fitcecoc Si especifica el valor, las ubicaciones de software cada predictor numérico en un número especificado de bins equiprobables y, a continuación, crece árboles en los índices de ubicación en lugar de los datos originales.'NumBins' Usted puede probar primero, y luego cambiar el valor dependiendo de la precisión y la velocidad de entrenamiento.'NumBins',50'NumBins'

  • Parallel Computing (): con una licencia de Parallel Computing Toolbox, puede acelerar el cálculo mediante el uso de la computación paralela, que envía cada alumno binario a un trabajador en el grupo.'Options',statset('UseParallel',true) El número de trabajadores depende de la configuración del sistema. Cuando se utilizan árboles de decisión para los alumnos binarios, se paraleliza el entrenamiento mediante los bloques de creación de subprocesos de Intel® (TBB) para sistemas de doble núcleo y superiores.fitcecoc Por lo tanto, especificar la opción no es útil en un solo equipo.'UseParallel' Utilice esta opción en un clúster.

Además, especifique que las probabilidades anteriores son 1/, donde = 13 es el número de clases distintas.KK

options = statset('UseParallel',true); Mdl = fitcecoc(X,Y,'Coding','onevsall','Learners',tEnsemble,...                 'Prior','uniform','NumBins',50,'Options',options);
Starting parallel pool (parpool) using the 'local' profile ... Connected to the parallel pool (number of workers: 6). 

es un modelo.MdlClassificationECOC

Validación cruzada

Valide en cruz el clasificador ECOC utilizando la validación cruzada de 10 veces.

CVMdl = crossval(Mdl,'Options',options);
Warning: One or more folds do not contain points from all the groups. 

es un modelo.CVMdlClassificationPartitionedECOC La advertencia indica que algunas clases no se representan mientras que el software entrena por lo menos un pliegue. Por lo tanto, esos pliegues no pueden predecir etiquetas para las clases que faltan. Puede inspeccionar los resultados de un pliegue utilizando la indexación de celdas y la notación de puntos. Por ejemplo, acceda a los resultados del primer pliegue introduciendo.CVMdl.Trained{1}

Utilice el clasificador ECOC validado para predecir etiquetas de plegado de validación. Puede calcular la matriz de confusión utilizando.confusionchart Mueva y cambie el tamaño del gráfico cambiando la propiedad de posición interna para asegurarse de que los porcentajes aparezcan en el Resumen de filas.

oofLabel = kfoldPredict(CVMdl,'Options',options); ConfMat = confusionchart(Y,oofLabel,'RowSummary','total-normalized'); ConfMat.InnerPosition = [0.10 0.12 0.85 0.85];

Reproducir datos Binned

Reproduzca datos de predictor en bin utilizando la propiedad del modelo entrenado y la función.BinEdgesdiscretize

X = Mdl.X; % Predictor data Xbinned = zeros(size(X)); edges = Mdl.BinEdges; % Find indices of binned predictors. idxNumeric = find(~cellfun(@isempty,edges)); if iscolumn(idxNumeric)     idxNumeric = idxNumeric'; end for j = idxNumeric      x = X(:,j);     % Convert x to array if x is a table.     if istable(x)         x = table2array(x);     end     % Group x into bins by using the discretize function.     xbinned = discretize(x,[-inf; edges{j}; inf]);     Xbinned(:,j) = xbinned; end

contiene los índices de ubicación, que van desde 1 hasta el número de bins, para los predictores numéricos. valores son para los predictores categóricos.XbinnedXbinned0 Si contiene s, los valores correspondientes son s.XNaNXbinnedNaN

Introducido en R2014b