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.

margin

Clase: ClassificationLinear

Los márgenes de clasificación para modelos de clasificación lineal

Descripción

ejemplo

m = margin(Mdl,X,Y) Devuelve el para el modelo binario, de clasificación lineal utilizando los Datos predictores y las etiquetas de clase correspondientes en. contiene márgenes de clasificación para cada fuerza de regularización en.márgenes de clasificaciónMdlXYmMdl

ejemplo

m = margin(___,Name,Value) utiliza cualquiera de las sintaxis anteriores y opciones adicionales especificadas por uno o más argumentos de par.Name,Value Por ejemplo, puede especificar que las columnas de los Datos predictores correspondan a las observaciones.

Argumentos de entrada

expandir todo

Binario, modelo de clasificación lineal, especificado como un objeto de modelo.ClassificationLinear Puede crear un objeto de modelo utilizando.ClassificationLinearfitclinear

Datos de predictor, especificados como una matriz dispersa o por completo.np Esta orientación indica que las filas corresponden a observaciones individuales y las columnas corresponden a variables predictoras individuales.X

Nota

Si orienta la matriz predictora para que las observaciones se correspondan con las columnas y las especifique, puede experimentar una reducción significativa en el tiempo de cálculo.'ObservationsIn','columns'

La longitud y el número de observaciones deben ser iguales.YX

Tipos de datos: single | double

Etiquetas de clase, especificadas como una matriz categórica, de caracteres o de cadena, Vector lógico o numérico o matriz de celdas de vectores de caracteres.

  • El tipo de datos de debe ser el mismo que el tipo de datos de.YMdl.ClassNames (The software treats string arrays as cell arrays of character vectors.)

  • Las distintas clases en deben ser un subconjunto de.YMdl.ClassNames

  • Si es una matriz de caracteres, cada elemento debe corresponder a una fila de la matriz.Y

  • La longitud y el número de observaciones deben ser iguales.YX

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

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

Dimensión de observación de Datos predictores, especificada como el par separado por comas que consta de y o.'ObservationsIn''columns''rows'

Nota

Si orienta la matriz predictora para que las observaciones se correspondan con las columnas y las especifique, puede experimentar una reducción significativa en el tiempo de ejecución de la optimización.'ObservationsIn','columns'

Argumentos de salida

expandir todo

, devuelto como un vector de columna numérico o matriz.Los márgenes de clasificación

es-por-, donde está el número de observaciones en y es el número de fortalezas de regularización en (es decir,).mnLnXLMdlnumel(Mdl.Lambda)

m(i,j) es el margen de clasificación de la observación utilizando el modelo de clasificación lineal entrenado que tiene fuerza de regularizacióni Mdl.Lambda(j).

Ejemplos

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

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

Entrenar un modelo de clasificación lineal binario que puede identificar si la palabra cuenta en una página web de documentación son de la documentación de estadísticas y machine learning Toolbox™. Especifique si desea mantener el 30% de las observaciones. Optimice la función objetivo utilizando SpaRSA.

rng(1); % For reproducibility  CVMdl = fitclinear(X,Ystats,'Solver','sparsa','Holdout',0.30); CMdl = CVMdl.Trained{1};

es un modelo.CVMdlClassificationPartitionedLinear Contiene la propiedad, que es un array de celdas 1-por-1 sosteniendo un modelo que el software entrenado usando el conjunto de entrenamiento.TrainedClassificationLinear

Extraiga los datos de entrenamiento y prueba de la definición de partición.

trainIdx = training(CVMdl.Partition); testIdx = test(CVMdl.Partition);

Calcule los márgenes de la muestra de entrenamiento y prueba.

mTrain = margin(CMdl,X(trainIdx,:),Ystats(trainIdx)); mTest = margin(CMdl,X(testIdx,:),Ystats(testIdx));

Debido a que hay una fuerza de regularización en, y son vectores de columna con longitudes iguales al número de observaciones de entrenamiento y prueba, respectivamente.CMdlmTrainmTest

Trace ambos conjuntos de márgenes utilizando parcelas de caja.

figure; boxplot([mTrain; mTest],[zeros(size(mTrain,1),1); ones(size(mTest,1),1)], ...     'Labels',{'Training set','Test set'}); h = gca; h.YLim = [-5 60]; title 'Training- and Test-Set Margins'

Las distribuciones de los márgenes entre los conjuntos de entrenamiento y prueba parecen similares.

Una forma de realizar la selección de características es comparar los márgenes de muestra de prueba de varios modelos. Basándose únicamente en este criterio, el clasificador con los márgenes más grandes es el mejor clasificador.

Cargue el conjunto de datos NLP. Preprocese los datos como en.Estimar los márgenes de muestreo de prueba

load nlpdata Ystats = Y == 'stats'; X = X'; rng(1); % For reproducibility

Cree una partición de datos que contenga el 30% de las observaciones para las pruebas.

Partition = cvpartition(Ystats,'Holdout',0.30); testIdx = test(Partition); % Test-set indices XTest = X(:,testIdx);      YTest = Ystats(testIdx);

es un objeto que define la partición del conjunto de datos.Partitioncvpartition

Elija aleatoriamente el 10% de las variables predictoras.

p = size(X,1); % Number of predictors idxPart = randsample(p,ceil(0.1*p));

Entrena dos modelos de clasificación binaria y lineal: uno que usa todos los predictores y uno que usa el 10% aleatorio. Optimice la función objetivo utilizando SpaRSA e indique que las observaciones corresponden a las columnas.

CVMdl = fitclinear(X,Ystats,'CVPartition',Partition,'Solver','sparsa',...     'ObservationsIn','columns'); PCVMdl = fitclinear(X(idxPart,:),Ystats,'CVPartition',Partition,'Solver','sparsa',...     'ObservationsIn','columns');

y son modelos.CVMdlPCVMdlClassificationPartitionedLinear

Extraiga los modelos entrenados de los modelos con validación cruzada.ClassificationLinear

CMdl = CVMdl.Trained{1}; PCMdl = PCVMdl.Trained{1};

Calcule los márgenes de muestra de prueba para cada clasificador. Trace la distribución de los conjuntos de márgenes utilizando parcelas de caja.

fullMargins = margin(CMdl,XTest,YTest,'ObservationsIn','columns'); partMargins = margin(PCMdl,XTest(idxPart,:),YTest,...     'ObservationsIn','columns');  figure; boxplot([fullMargins partMargins],'Labels',...     {'All Predictors','10% of the Predictors'}); h = gca; h.YLim = [-20 60]; title('Test-Sample Margins')

La distribución del margen de se sitúa más alta que la distribución del margen de.CMdlPCMdl

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, compare las distribuciones de los márgenes de muestra de prueba.

Cargue el conjunto de datos NLP. Preprocese los datos como en.Estimar los márgenes de muestreo de prueba

load nlpdata Ystats = Y == 'stats'; X = X';   Partition = cvpartition(Ystats,'Holdout',0.30); testIdx = test(Partition); XTest = X(:,testIdx); YTest = Ystats(testIdx);

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>8</mn>
</mrow>
</msup>
</mrow>
</math>
a través de
<math display="block">
<mrow>
<mn>1</mn>
<msup>
<mrow>
<mn>0</mn>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msup>
</mrow>
</math>
.

Lambda = logspace(-8,1,11);

Entrena modelos de clasificación lineal y binaria que utilizan cada una de las fortalezas de regularización. Optimice la función objetivo utilizando SpaRSA. Reduzca la tolerancia en el degradado de la función objetiva a.1e-8

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

Extraiga el modelo de clasificación lineal entrenado.

Mdl = CVMdl.Trained{1}
Mdl =    ClassificationLinear       ResponseName: 'Y'         ClassNames: [0 1]     ScoreTransform: 'logit'               Beta: [34023x11 double]               Bias: [1x11 double]             Lambda: [1x11 double]            Learner: 'logistic'     Properties, Methods  

es un objeto de modelo.MdlClassificationLinear Porque es una secuencia de fortalezas de regularización, se puede pensar en como 11 modelos, uno para cada fuerza de regularización en.LambdaMdlLambda

Estimar los márgenes de muestreo de prueba.

m = margin(Mdl,X(:,testIdx),Ystats(testIdx),'ObservationsIn','columns'); size(m)
ans = 1×2

        9471          11

Debido a que hay 11 fortalezas de regularización, tiene 11 columnas.m

Trace los márgenes de muestreo de prueba para cada fuerza de regularización. Dado que las puntuaciones de regresión logística están en [0,1], los márgenes se encuentran en [-1, 1]. Reescalar los márgenes para ayudar a identificar la fuerza de regularización que maximiza los márgenes sobre la rejilla.

figure; boxplot(10000.^m) ylabel('Exponentiated test-sample margins') xlabel('Lambda indices')

Varios valores de distribuciones de margen de rendimiento que se compactan cerca deLambda

<math display="block">
<mrow>
<mn>1</mn>
<mn>0</mn>
<mn>0</mn>
<mn>0</mn>
<msup>
<mrow>
<mn>0</mn>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msup>
</mrow>
</math>
. Los valores más altos de lambda conducen a la dispersión variable predictora, que es una buena calidad de un clasificador.

Elija la fuerza de regularización que se produce justo antes de que los centros de las distribuciones de márgenes empiecen a disminuir.

LambdaFinal = Lambda(5);

Entrenar un modelo de clasificación lineal utilizando todo el conjunto de datos y especificar la fuerza de regularización deseada.

MdlFinal = fitclinear(X,Ystats,'ObservationsIn','columns',...     'Learner','logistic','Solver','sparsa','Regularization','lasso',...     'Lambda',LambdaFinal);

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

Más acerca de

expandir todo

Capacidades ampliadas

Introducido en R2016a