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.

kfoldLoss

Pérdida de clasificación para observaciones no utilizadas en la formación

Descripción

ejemplo

L = kfoldLoss(CVMdl) Devuelve la validación cruzada obtenida por el modelo de clasificación lineal, binario y validado.las pérdidas de clasificaciónCVMdl Es decir, para cada pliegue, se estima la pérdida de clasificación para las observaciones que se mantiene cuando se entrena utilizando todas las demás observaciones.kfoldLoss

contiene una pérdida de clasificación para cada fuerza de regularización en los modelos de clasificación lineal que componen.LCVMdl

ejemplo

L = kfoldLoss(CVMdl,Name,Value) utiliza opciones adicionales especificadas por uno o más argumentos de par.Name,Value Por ejemplo, indique qué pliegues utilizar para el cálculo de pérdidas o especifique la función de pérdida de clasificación.

Argumentos de entrada

expandir todo

Modelo de clasificación lineal, binario y validado mediante validación cruzada, especificado como objeto de modelo.ClassificationPartitionedLinear Puede crear un modelo utilizando y especificando cualquiera de los argumentos de combinación de validación cruzada, nombre-valor, por ejemplo,.ClassificationPartitionedLinearfitclinearCrossVal

Para obtener estimaciones, se aplican los mismos datos utilizados para validar el modelo de clasificación lineal (y).kfoldLossXY

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

Dobla los índices que se usarán para la predicción de Clasificación-puntuación, especificado como el par separado por comas que consta de un vector numérico de enteros positivos.'Folds' Los elementos de debe variar de a través.Folds1CVMdl.KFold

Ejemplo: 'Folds',[1 4 10]

Tipos de datos: single | double

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 utilizando 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 (, es el modelo de entrada).nXKnumel(Mdl.ClassNames)Mdl La función debe tener esta firma

    lossvalue = lossfun(C,S,W,Cost)
    Dónde:

    • 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 a qué clase 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 los normaliza para 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

    Especifique la función mediante 'LossFun',@lossfun.

Tipos de datos: char | string | function_handle

Nivel de agregación de pérdidas, especificado como el par separado por comas que consta de y o.'Mode''average''individual'

ValorDescripción
'average'Devuelve las pérdidas promediadas sobre todos los pliegues
'individual'Devuelve pérdidas por cada pliegue

Ejemplo: 'Mode','individual'

Argumentos de salida

expandir todo

Validado de forma cruzada, devuelto como un escalar numérico, Vector o matriz.las pérdidas de clasificación La interpretación de depende de.LLossFun

Dejar R ser el número de fortalezas de regularizaciones son los modelos con validación cruzada (almacenados en) ynumel(CVMdl.Trained{1}.Lambda) F ser el número de pliegues (almacenados en).CVMdl.KFold

  • Si es así, entonces es un 1-por-Mode'average'LR Vector. L(j) es la pérdida de clasificación promedio sobre todos los pliegues del modelo validado por la cruz que utiliza la fuerza de regularización j.

  • De lo contrario, es unL FporR Matriz. L(i,j) es la pérdida de clasificación para el pliegue i del modelo de validación cruzada que utiliza la fuerza de regularización j.

Para estimar, utiliza los datos que se crearon (ver y).LkfoldLossCVMdlXY

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

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

es un modelo.CVMdlClassificationPartitionedLinear De forma predeterminada, el software implementa la validación cruzada de 10 veces. Puede alterar el número de pliegues mediante el argumento de par nombre-valor.'KFold'

Calcule el promedio de las tasas de error de clasificación.

ce = kfoldLoss(CVMdl)
ce = 7.6017e-04 

Como alternativa, puede obtener las tasas de error de clasificación por pliegue especificando el par nombre-valor en.'Mode','individual'kfoldLoss

Cargue el conjunto de datos NLP. Preprocese los datos como en, y transponga los Datos predictores.Error de clasificación de validación cruzada de estimaciónk

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

Valide de forma cruzada un modelo de clasificación lineal y binario mediante la validación cruzada de 5 veces. 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','KFold',5,...     'ObservationsIn','columns'); CMdl = CVMdl.Trained{1};

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

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, y_j es la respuesta (-1 para la clase negativa, y 1 de lo contrario), y f_j es la puntuación de clasificación sin procesar de la observación.jjj 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 Dado que la función no utiliza el coste de clasificación, utilice para ignorar su posición.~kfoldLoss

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

Estimar la pérdida de clasificación media validada cruzada utilizando la función de pérdida lineal. Además, obtenga la pérdida por cada pliegue.

ce = kfoldLoss(CVMdl,'LossFun',linearloss)
ce = -8.0982 
ceFold = kfoldLoss(CVMdl,'LossFun',linearloss,'Mode','individual')
ceFold = 5×1

   -8.3165
   -8.7633
   -7.4342
   -8.0423
   -7.9347

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

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

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

Valide los modelos de clasificación binaria y lineal mediante validación cruzada de 5 veces, y use 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',...     '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  

Extraiga un 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.Mdl1ClassificationLinear 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

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 los índices de la fuerza de regularización que equilibra la dispersión variable predictora y el error de clasificación bajo. 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

Introducido en R2016a