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.

loss

Clase: ClassificationLinear

Pérdida de clasificación para modelos de clasificación lineal

Descripción

ejemplo

L = loss(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 índices de error de clasificación para cada fuerza de regularización en.las pérdidas de clasificaciónMdlXYLMdl

ejemplo

L = loss(___,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 observaciones o especificar la función de pérdida de clasificación.

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

Función de pérdida, especificada como el par separado por comas que consta de y un identificador de función o nombre de función de pérdida integrado.'LossFun'

  • La tabla siguiente enumera las funciones de pérdida disponibles. Especifique uno utilizando su vector de caracteres correspondiente o escalar de cadena.

    ValorDescripción
    'binodeviance'Desviación binomial
    'classiferror'Error de clasificación
    'exponential'Exponencial
    'hinge'Bisagra
    'logit'Logística
    'mincost'Costo mínimo previsto de clasificación errónea (para puntuaciones de clasificación que son probabilidades posteriores)
    'quadratic'Cuadrática

    es adecuada para las puntuaciones de clasificación que son probabilidades posteriores.'mincost' Para los modelos de clasificación lineal, los alumnos de regresión logística devuelven probabilidades posteriores como puntuaciones de clasificación de forma predeterminada, pero los alumnos de SVM no (consulte predict).

  • Especifique su propia función mediante la notación de identificador de función.

    Vamos a ser el número de observaciones en y ser el número de clases distintas (, donde está el modelo de entrada).nXKnumel(Mdl.ClassNames)Mdl Su función debe tener esta firma:

    lossvalue = lossfun(C,S,W,Cost)

    • El argumento de salida es un escalar.lossvalue

    • Elija el nombre de la función (lossfun).

    • es una matriz lógica con filas que indican la clase a la que pertenece la observación correspondiente.CnK El orden de las columnas corresponde al orden de la clase.Mdl.ClassNames

      Construya estableciendo, si la observación está en la clase, para cada fila.CC(p,q) = 1pq Establezca todos los demás elementos de la fila en.p0

    • es una matriz numérica de puntuaciones de clasificación.SnK El orden de las columnas corresponde al orden de la clase. es una matriz de puntuaciones de clasificación, similar a la salida de.Mdl.ClassNamesSPredecir

    • es un vector numérico de pesos de observación de-por-1.Wn Si pasa, el software normaliza los pesos a sumar.W1

    • es una matriz numérica de costes de clasificación errónea.CostoKK Por ejemplo, especifica un coste para la clasificación correcta y para la clasificación errónea.Cost = ones(K) – eye(K)01

Ejemplo: 'LossFun',@lossfun

Tipos de datos: char | string | function_handle

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'

Ponderaciones de observación, especificadas como el par separado por comas que consta de un vector numérico de valores positivos.'Weights' Si proporciona pesos, calcula la pérdida de clasificación ponderada.loss

Dejar n ser el número de observaciones en.X

  • debe sernumel(Weights) n.

  • De forma predeterminada, esWeights ones(n,1).

loss Normaliza para resumir hasta el valor de la probabilidad anterior en la clase respectiva.Weights

Tipos de datos: double | single

Argumentos de salida

expandir todo

Pérdidas de clasificación, devueltas como un vector de fila o escalar numérico. La interpretación de depende y.LWeightsLossFun

es del mismo tamaño que.LMdl.Lambda L(j) es la pérdida de clasificación del modelo de clasificación lineal entrenado utilizando la fuerza de regularización 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);

Estime el error de clasificación de la formación y la muestra de prueba.

ceTrain = loss(CMdl,X(trainIdx,:),Ystats(trainIdx))
ceTrain = 1.3572e-04 
ceTest = loss(CMdl,X(testIdx,:),Ystats(testIdx))
ceTest = 5.2804e-04 

Porque hay una fuerza de regularización en, y son escalares numéricos.CMdlceTrainceTest

Cargue el conjunto de datos NLP. Preprocese los datos como en, y transponga los Datos predictores.Estimación de pérdida de clasificación de muestra de prueba

load nlpdata Ystats = Y == 'stats'; X = X';

Entrenar un modelo binario de clasificación lineal. Especifique si desea mantener el 30% de las observaciones. Optimice la función objetivo utilizando SpaRSA. Especifique que las observaciones de predictor corresponden a columnas.

rng(1); % For reproducibility  CVMdl = fitclinear(X,Ystats,'Solver','sparsa','Holdout',0.30,...     'ObservationsIn','columns'); 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);

Crear una función anónima que mide la pérdida lineal, es decir,

<math display="block">
<mrow>
<mi>L</mi>
<mo>=</mo>
<mfrac>
<mrow>
<munder>
<mrow>
<mo></mo>
</mrow>
<mrow>
<mi>j</mi>
</mrow>
</munder>
<mo>-</mo>
<msub>
<mrow>
<mi>w</mi>
</mrow>
<mrow>
<mi>j</mi>
</mrow>
</msub>
<msub>
<mrow>
<mi>y</mi>
</mrow>
<mrow>
<mi>j</mi>
</mrow>
</msub>
<msub>
<mrow>
<mi>f</mi>
</mrow>
<mrow>
<mi>j</mi>
</mrow>
</msub>
</mrow>
<mrow>
<munder>
<mrow>
<mo></mo>
</mrow>
<mrow>
<mi>j</mi>
</mrow>
</munder>
<msub>
<mrow>
<mi>w</mi>
</mrow>
<mrow>
<mi>j</mi>
</mrow>
</msub>
</mrow>
</mfrac>
<mo>.</mo>
</mrow>
</math>

<math display="block">
<mrow>
<msub>
<mrow>
<mi>w</mi>
</mrow>
<mrow>
<mi>j</mi>
</mrow>
</msub>
</mrow>
</math>
es el peso para la observación,j
<math display="block">
<mrow>
<msub>
<mrow>
<mi>y</mi>
</mrow>
<mrow>
<mi>j</mi>
</mrow>
</msub>
</mrow>
</math>
es la respuesta (-1 para la clase negativa, y 1 en caso contrario), yj
<math display="block">
<mrow>
<msub>
<mrow>
<mi>f</mi>
</mrow>
<mrow>
<mi>j</mi>
</mrow>
</msub>
</mrow>
</math>
es la puntuación de clasificación cruda de la observación.j Las funciones de pérdida personalizadas deben escribirse en un formulario determinado. Para obtener reglas sobre cómo escribir una función de pérdida personalizada, vea el argumento de par nombre-valor.LossFun

linearloss = @(C,S,W,Cost)sum(-W.*sum(S.*C,2))/sum(W);

Calcule la pérdida de clasificación de la formación y la muestra de prueba utilizando la función de pérdida lineal.

ceTrain = loss(CMdl,X(:,trainIdx),Ystats(trainIdx),'LossFun',linearloss,...     'ObservationsIn','columns')
ceTrain = -7.8330 
ceTest = loss(CMdl,X(:,testIdx),Ystats(testIdx),'LossFun',linearloss,...     'ObservationsIn','columns')
ceTest = -7.7383 

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 tasas de error de clasificación de muestra de prueba.

Cargue el conjunto de datos NLP. Preprocese los datos como en.Especifique pérdida de clasificación personalizada

load nlpdata Ystats = Y == 'stats'; X = X';   rng(10); % For reproducibility 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>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);

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

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

Calcule el error de clasificación de muestra de prueba.

ce = loss(Mdl,X(:,testIdx),Ystats(testIdx),'ObservationsIn','columns');

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 muestreo de prueba 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 + 1));  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

Más acerca de

expandir todo

Algoritmos

Por defecto, los pesos de observación son probabilidades de clase previas. Si usted suministra pesos usando, entonces el software los normaliza para sumar a las probabilidades previas en las clases respectivas.Weights El software utiliza los pesos ponderaciones renormalizadas para estimar la pérdida de clasificación ponderada.

Capacidades ampliadas

Introducido en R2016a