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.

ClassificationPartitionedLinear

Paquete: classreg.learning.partition
Superclases: ClassificationPartitionedModel

Modelo lineal con validación cruzada para la clasificación binaria de datos de alta cota

Descripción

es un conjunto de modelos de clasificación lineal formados en pliegues con validación cruzada.ClassificationPartitionedLinear Para obtener un modelo de clasificación lineal y validado, utilice y especifique una de las opciones de validación cruzada.fitclinear Puede estimar la calidad de la clasificación, o lo bien que el modelo de clasificación lineal generaliza, utilizando uno o más de estos métodos "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 del mismo 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, que se almacena en, utilizando 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 una manera similar para el tercer a quinto modelos.

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.ClassificationPartitionedLinear

Construcción

CVMdl = fitclinear(X,Y,Name,Value) crea un modelo de clasificación lineal con validación cruzada cuando sea, o bien.Name'CrossVal''CVPartition''Holdout''KFold' Para obtener más información, consulte.fitclinear

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 lineal con validación cruzada para la clasificación binaria o la regresión.'Linear'

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, p. ej., los valores de los argumentos de par nombre-valor utilizados para validar el modelo lineal, 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

Modelos de clasificación lineal formados en pliegues de validación cruzada, especificados como una matriz de modelos de celdas. tiene células, donde está el número de pliegues.ClassificationLinearTrainedkk

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 de modo que las ponderaciones de las observaciones dentro de una clase determinada se suman a la probabilidad previa de esa clase.W

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.YNumObservationsYfitclinear (The software treats string arrays as cell arrays of character vectors.)

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

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

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

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

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 Hay más de dos clases en los datos.

Identifique las etiquetas que corresponden a las páginas web de documentación de estadísticas y machine learning Toolbox™.

Ystats = Y == 'stats';

Valide de forma cruzada un modelo de clasificación lineal y binario que pueda identificar si la palabra cuenta en una página web de documentación es de la documentación de estadísticas y machine learning Toolbox™.

rng(1); % For reproducibility  CVMdl = fitclinear(X,Ystats,'CrossVal','on')
CVMdl =    classreg.learning.partition.ClassificationPartitionedLinear     CrossValidatedModel: 'Linear'            ResponseName: 'Y'         NumObservations: 31572                   KFold: 10               Partition: [1x1 cvpartition]              ClassNames: [0 1]          ScoreTransform: 'none'     Properties, Methods  

es un modelo con validación cruzada.CVMdlClassificationPartitionedLinear Dado que implementa la validación cruzada de 10 veces de forma predeterminada, contiene diez modelos que contienen los resultados de la formación de modelos de clasificación lineal para cada uno de los pliegues.fitclinearCVMdl.TrainedClassificationLinear

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 = 7.6017e-04 

El error de generalización Estimado es inferior al 0,1% de las observaciones mal clasificadas.

Para determinar una buena fuerza de penalización de lazo para un modelo de clasificación lineal que utiliza un aprendizaje 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 Hay más de dos clases en los datos.

Los modelos deben identificar si la palabra cuenta en una página web son de la documentación de estadísticas y machine learning Toolbox™. Por lo tanto, identifique las etiquetas que corresponden a las páginas web de documentación de estadísticas y machine learning Toolbox™.

Ystats = Y == 'stats';

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>6</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>0</mn>
<mo>.</mo>
<mn>5</mn>
</mrow>
</msup>
</mrow>
</math>
.

Lambda = logspace(-6,-0.5,11);

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. Calcule los coeficientes utilizando SpaRSA. Reduzca la tolerancia en el degradado de la función objetiva a.1e-8

X = X';  rng(10); % For reproducibility CVMdl = fitclinear(X,Ystats,'ObservationsIn','columns','KFold',5,...     'Learner','logistic','Solver','sparsa','Regularization','lasso',...     'Lambda',Lambda,'GradientTolerance',1e-8)
CVMdl =    classreg.learning.partition.ClassificationPartitionedLinear     CrossValidatedModel: 'Linear'            ResponseName: 'Y'         NumObservations: 31572                   KFold: 5               Partition: [1×1 cvpartition]              ClassNames: [0 1]          ScoreTransform: 'none'     Properties, Methods  
 numCLModels = numel(CVMdl.Trained)
numCLModels = 5 

es un modelo.CVMdlClassificationPartitionedLinear Porque implementa la validación cruzada 5 veces, contiene 5 modelos que el software entrena en cada pliegue.fitclinearCVMdlClassificationLinear

Mostrar el primer modelo de clasificación lineal entrenado.

Mdl1 = CVMdl.Trained{1}
Mdl1 =    ClassificationLinear       ResponseName: 'Y'         ClassNames: [0 1]     ScoreTransform: 'logit'               Beta: [34023×11 double]               Bias: [-13.2904 -13.2904 -13.2904 -13.2904 -9.9357 -7.0782 -5.4335 -4.5473 -3.4223 -3.1649 -2.9795]             Lambda: [1.0000e-06 3.5481e-06 1.2589e-05 4.4668e-05 1.5849e-04 5.6234e-04 0.0020 0.0071 0.0251 0.0891 0.3162]            Learner: 'logistic'     Properties, Methods  

es un objeto de modelo. construido por el entrenamiento en los primeros cuatro pliegues.Mdl1ClassificationLinearfitclinearMdl1 Porque es una secuencia de fortalezas de regularización, se puede pensar en como 11 modelos, uno para cada fuerza de regularización en.LambdaMdl1Lambda

Estime el error de clasificación de validación cruzada.

ce = kfoldLoss(CVMdl);

Debido a que hay 11 fortalezas de regularización, es un vector de 1 por 11 de tasas de error de clasificación.ce

Valores más altos de plomo a la dispersión variable predictora, que es una buena calidad de un clasificador.Lambda Para cada fuerza de regularización, entrenar un modelo de clasificación lineal utilizando todo el conjunto de datos y las mismas opciones que cuando se validaron los modelos de forma cruzada. Determine el número de coeficientes distintos de cero por modelo.

Mdl = fitclinear(X,Ystats,'ObservationsIn','columns',...     'Learner','logistic','Solver','sparsa','Regularization','lasso',...     'Lambda',Lambda,'GradientTolerance',1e-8); numNZCoeff = sum(Mdl.Beta~=0);

En la misma figura, trace las tasas de error de clasificación y validación cruzada y la frecuencia de coeficientes distintos de cero para cada fuerza de regularización. Trace todas las variables en la escala de registro.

figure; [h,hL1,hL2] = plotyy(log10(Lambda),log10(ce),...     log10(Lambda),log10(numNZCoeff));  hL1.Marker = 'o'; hL2.Marker = 'o'; ylabel(h(1),'log_{10} classification error') ylabel(h(2),'log_{10} nonzero-coefficient frequency') xlabel('log_{10} Lambda') title('Test-Sample Statistics') hold off

Elija el índice de la fuerza de regularización que equilibra la dispersión variable predictora y el error de clasificación baja. En este caso, un valor entre

<math display="block">
<mrow>
<mn>1</mn>
<msup>
<mrow>
<mn>0</mn>
</mrow>
<mrow>
<mo>-</mo>
<mn>4</mn>
</mrow>
</msup>
</mrow>
</math>
Para
<math display="block">
<mrow>
<mn>1</mn>
<msup>
<mrow>
<mn>0</mn>
</mrow>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msup>
</mrow>
</math>
debería ser suficiente.

idxFinal = 7;

Seleccione el modelo con la fuerza de regularización elegida.Mdl

MdlFinal = selectModels(Mdl,idxFinal);

es un modelo que contiene una fuerza de regularización.MdlFinalClassificationLinear Para estimar las etiquetas de las nuevas observaciones, pasar y los nuevos datos a.MdlFinalPredecir

Introducido en R2016a