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.

ClassificationPartitionedLinearECOC

Paquete: classreg.learning.partition
Superclases: ClassificationPartitionedModel

Modelo de códigos de salida de corrección de errores lineales con validación cruzada para la clasificación multiclase de datos de alta cota

Descripción

es un conjunto de modelos de códigos de salida de corrección de errores (ECOC) compuestos por modelos de clasificación lineal, formados en pliegues con validación cruzada.ClassificationPartitionedLinearECOC Estimar la calidad de la clasificación mediante validación cruzada utilizando una o más funciones "kfold": kfoldPredict, kfoldLoss, kfoldMarginY kfoldEdge.

Cada método "kfold" utiliza modelos formados en observaciones en pliegue para predecir la respuesta para las observaciones fuera de pliegue. 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 aproximadamente de igual tamaño. El contiene cuatro de los grupos (es decir, aproximadamente 4/5 de los datos) y el contiene el otro grupo (es decir, aproximadamente 1/5 de los datos).pliegue de entrenamientopliegue de prueba En este caso, la validación cruzada procede de la siguiente manera.

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

  2. El software entrena el segundo modelo (almacenado en) utilizando las observaciones del 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 llamando a kfoldPredict, calcula las predicciones para las observaciones del grupo 1 utilizando el primer modelo, el grupo 2 para el segundo modelo, y así sucesivamente. En Resumen, el software estima una respuesta para cada observación utilizando el modelo entrenado sin esa observación.

Nota

los objetos de modelo no almacenan el conjunto de Datos predictores.ClassificationPartitionedLinearECOC

Construcción

CVMdl = fitcecoc(X,Y,'Learners',t,Name,Value) Devuelve un modelo ECOC de validación cruzada y lineal cuando:

  • es o un objeto de plantilla devuelto por.t'Linear'templateLinear

  • es uno de,,, o.Name'CrossVal''CVPartition''Holdout''KFold'

Para obtener más información, consulte.fitcecoc

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, por ejemplo, los valores de los argumentos de par nombre-valor utilizados para validar de forma cruzada el clasificador ECOC, especificado como un objeto. no contiene parámetros estimados.ModelParameters

Acceda 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

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 es el mismo tipo de datos que el argumento de entrada que ha pasado para validar de forma cruzada el modelo.YNumObservationsYfitcecoc (The software treats string arrays as cell arrays of character vectors.)

Cada fila de representa la clasificación observada de la observación en los Datos predictores.Y

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

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

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 a través de los pliegues, entonces es una-por-matriz, donde es el número de estudiantes binarios ().BinaryYNumObservationsLLsize(CodingMatrix,2)

    Los elementos de son, o, y el valor corresponde a una asignación de clase dicottóloga.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 a través de los pliegues, entonces es una-por-matriz. es el número de clases y es el número de alumnos binarios.CodingMatrixKLKL

    Los elementos de son, o, y el valor corresponde a una asignación de clase dicottóloga.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[] Obtenga 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 de predictor en su orden de aparición en los Datos predictores utilizados para entrenar, especificado como una matriz de celdas de vectores de caracteres. tiene una longitud igual al número de variables predictoras en los Datos predictores.CVMdlPredictorNames

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 los modelos de clasificación lineal y antes de la transformación, la puntuación de clasificación pronosticada para la observación (vector de fila) esx f(x) = xβ + b, dónde y corresponder y, respectivamente.βbMdl.BetaMdl.Bias

Para cambiar la función de transformación de partitura a, por ejemplo, function, 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 identificador de función.MATLAB®

    Mdl.ScoreTransform = @function;

    function debe aceptar una matriz de las puntuaciones originales para cada clase y, a continuación, devolver una matriz del mismo tamaño que representa las puntuaciones transformadas para cada clase.

Tipos de datos: char | function_handle

Métodos

kfoldEdgeMargen de clasificación para observaciones no utilizadas para la formación
kfoldLossPérdida de clasificación para observaciones no utilizadas en la formación
kfoldMarginMárgenes de clasificación para observaciones no utilizadas en la formación
kfoldPredictPredecir etiquetas para observaciones no utilizadas para el entrenamiento

Semántica de copia

Valor. Para saber cómo afectan las clases de valor a las operaciones de copia, consulte.Copiar objetos (MATLAB)

Ejemplos

contraer todo

Cargue el conjunto de datos NLP.

load nlpdata

es una matriz dispersa de Datos predictores y es un vector categórico de etiquetas de clase.XY

Valide de forma cruzada un modelo de clasificación lineal multiclase que pueda identificar qué Toolbox de MATLAB® es una página web de documentación basada en recuentos de palabras de la página.

rng(1); % For reproducibility  CVMdl = fitcecoc(X,Y,'Learners','linear','CrossVal','on')
CVMdl =    classreg.learning.partition.ClassificationPartitionedLinearECOC     CrossValidatedModel: 'LinearECOC'            ResponseName: 'Y'         NumObservations: 31572                   KFold: 10               Partition: [1x1 cvpartition]              ClassNames: [1x13 categorical]          ScoreTransform: 'none'     Properties, Methods  

es un modelo con validación cruzada.CVMdlClassificationPartitionedLinearECOC Dado que implementa la validación cruzada de 10 veces de forma predeterminada, contiene un vector de celdas de 10 por 1 de diez modelos que contienen los resultados de la formación de modelos ECOC compuestos de modelos de clasificación lineal y binaria para cada uno de los pliegues.fitcecocCVMdl.TrainedCompactClassificationECOC

Estime las etiquetas para las observaciones de fuera de pliegue y estime el error de generalización pasando a y, respectivamente.CVMdlkfoldPredictkfoldLoss

oofLabels = kfoldPredict(CVMdl); ge = kfoldLoss(CVMdl)
ge = 0.0958 

El error de generalización Estimado es de aproximadamente un 10% de observaciones mal clasificadas.

Para mejorar el error de generalización, intente especificar otro solucionador, como LBFGS. Para cambiar las opciones predeterminadas al entrenar modelos de ECOC compuestos de modelos de clasificación lineal, cree una plantilla de modelo de clasificación lineal utilizando y, a continuación, pase la plantilla a.templateLinearfitcecoc

Para determinar una buena fuerza de penalización de lazo para un modelo ECOC compuesto por modelos de clasificación lineal que utilizan alumnos de regresión logística, implemente la validación cruzada de 5 veces.

Cargue el conjunto de datos NLP.

load nlpdata

es una matriz dispersa de Datos predictores y es un vector categórico de etiquetas de clase.XY

Para simplificar, utilice la etiqueta ' otros ' para todas las observaciones que no sean, o.Y'simulink''dsp''comm'

Y(~(ismember(Y,{'simulink','dsp','comm'}))) = 'others';

Cree un conjunto de 11 fortalezas de regularización logarmicamente espaciadas de

<math display="block">
<mrow>
<mn>1</mn>
<msup>
<mrow>
<mn>0</mn>
</mrow>
<mrow>
<mo>-</mo>
<mn>7</mn>
</mrow>
</msup>
</mrow>
</math>
a través de
<math display="block">
<mrow>
<mn>1</mn>
<msup>
<mrow>
<mn>0</mn>
</mrow>
<mrow>
<mo>-</mo>
<mn>2</mn>
</mrow>
</msup>
</mrow>
</math>
.

Lambda = logspace(-7,-2,11);

Cree una plantilla de modelo de clasificación lineal que especifique el uso de los alumnos de regresión logística, utilice las sanciones de lazo con fortalezas en, entrenar utilizando SpaRSA y reduzca la tolerancia en el degradado de la función objetivo a.Lambda1e-8

t = templateLinear('Learner','logistic','Solver','sparsa',...     'Regularization','lasso','Lambda',Lambda,'GradientTolerance',1e-8);

Valide los modelos en cruz. Para aumentar la velocidad de ejecución, transponer los Datos predictores y especificar que las observaciones se encuentran en columnas.

X = X';  rng(10); % For reproducibility CVMdl = fitcecoc(X,Y,'Learners',t,'ObservationsIn','columns','KFold',5);

es un modelo.CVMdlClassificationPartitionedLinearECOC

Diseccionar, y cada modelo dentro de ella.CVMdl

numECOCModels = numel(CVMdl.Trained)
numECOCModels = 5 
ECOCMdl1 = CVMdl.Trained{1}
ECOCMdl1 =    classreg.learning.classif.CompactClassificationECOC       ResponseName: 'Y'         ClassNames: [comm    dsp    simulink    others]     ScoreTransform: 'none'     BinaryLearners: {6×1 cell}       CodingMatrix: [4×6 double]     Properties, Methods  
numCLModels = numel(ECOCMdl1.BinaryLearners)
numCLModels = 6 
CLMdl1 = ECOCMdl1.BinaryLearners{1}
CLMdl1 =    ClassificationLinear       ResponseName: 'Y'         ClassNames: [-1 1]     ScoreTransform: 'logit'               Beta: [34023×11 double]               Bias: [-0.3125 -0.3596 -0.3596 -0.3596 -0.3596 -0.3596 -0.1593 -0.0737 -0.1759 -0.3452 -0.5174]             Lambda: [1.0000e-07 3.1623e-07 1.0000e-06 3.1623e-06 1.0000e-05 3.1623e-05 1.0000e-04 3.1623e-04 1.0000e-03 0.0032 0.0100]            Learner: 'logistic'     Properties, Methods  

Debido a que implementa la validación cruzada de 5 veces, contiene una matriz de celdas de 5 por 1 de modelos que el software entrena en cada pliegue.fitcecocCVMdlCompactClassificationECOC La propiedad de cada modelo contiene los modelos.BinaryLearnersCompactClassificationECOCClassificationLinear El número de modelos dentro de cada modelo compacto de ECOC depende del número de etiquetas distintas y del diseño de codificación.ClassificationLinear Porque es una secuencia de fortalezas de regularización, se puede pensar en como 11 modelos, uno para cada fuerza de regularización en.LambdaCLMdl1Lambda

Determine qué tan bien se generalizan los modelos trazando los promedios del error de clasificación de 5 veces para cada fuerza de regularización. Identifique la fuerza de regularización que minimiza el error de generalización sobre la cuadrícula.

ce = kfoldLoss(CVMdl); figure; plot(log10(Lambda),log10(ce)) [~,minCEIdx] = min(ce); minLambda = Lambda(minCEIdx); hold on plot(log10(minLambda),log10(ce(minCEIdx)),'ro'); ylabel('log_{10} 5-fold classification error') xlabel('log_{10} Lambda') legend('MSE','Min classification error') hold off

Entrenar un modelo ECOC compuesto de modelo de clasificación lineal utilizando todo el conjunto de datos, y especificar la fuerza de regularización mínima.

t = templateLinear('Learner','logistic','Solver','sparsa',...     'Regularization','lasso','Lambda',minLambda,'GradientTolerance',1e-8); MdlFinal = fitcecoc(X,Y,'Learners',t,'ObservationsIn','columns');

Para estimar las etiquetas de las nuevas observaciones, pasar y los nuevos datos a.MdlFinalPredecir

Introducido en R2016a