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.

kfoldEdge

Margen de clasificación para observaciones no utilizadas para la formación

Descripción

ejemplo

e = kfoldEdge(CVMdl) Devuelve la validación cruzada obtenida por el modelo de códigos de salida de corrección de errores (ECOC) validado mediante validación cruzada compuesto de modelos de clasificación lineal.bordes de clasificaciónCVMdl Es decir, para cada pliegue, se estima la arista de clasificación para las observaciones que se mantiene cuando se entrena utilizando todas las demás observaciones.kfoldEdge

contiene una arista de clasificación para cada fuerza de regularización en los modelos de clasificación lineal que componen.eCVMdl

ejemplo

e = kfoldEdge(CVMdl,Name,Value) utiliza opciones adicionales especificadas por uno o más argumentos de par.Name,Value Por ejemplo, especifique un esquema de decodificación, que se pliega para utilizarlo para el cálculo de arista o el nivel de verbosidad.

Argumentos de entrada

expandir todo

Modelo ECOC validado con validación cruzada compuesto por modelos de clasificación lineal, especificados como objeto de modelo.ClassificationPartitionedLinearECOC Puede crear un modelo utilizando y por:ClassificationPartitionedLinearECOCfitcecoc

  1. Especificando cualquiera de los argumentos de la validación cruzada, nombre-valor par, por ejemplo,CrossVal

  2. Establecer el argumento de par nombre-valor o una plantilla de modelo de clasificación lineal devuelta porLearners'linear'templateLinear

Para obtener estimaciones, se aplican los mismos datos utilizados para validar el modelo ECOC (y).kfoldEdgeXY

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 binaria de aprendizaje, 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.'BinaryLoss'

  • Esta tabla contiene nombres y descripciones de las funciones incorporadas, donde yj es una etiqueta de clase para un alumno binario determinado (en el conjunto {-1, 1, 0}), sj es la partitura para la observación, y (jgyj,sj) es la fórmula de pérdida binaria.

    ValorDescripciónPuntuación de dominio(gyj,sj)
    'binodeviance'Desviación binomial(– ∞, ∞)log [1 + exp (– 2yjsj)]/[2log (2)]
    'exponential'Exponencial(– ∞, ∞)exp (–yjsj)/2
    'hamming'Hamming[0, 1] o (– ∞, ∞)[1 – signo (yjsj)]/2
    'hinge'Bisagra(– ∞, ∞)Max (0,1 – yjsj)/2
    'linear'Lineal(– ∞, ∞)1 yjsj)/2
    'logit'Logística(– ∞, ∞)log [1 + exp (–yjsj)]/[2log (2)]
    'quadratic'Cuadrática[0,1]1 yj(2sj – 1)]2/2

    El software normaliza las pérdidas binarias de tal forma que la pérdida es de 0,5 cuando yj = 0. Además, el software calcula la pérdida binaria media para cada clase.

  • Para una función de pérdida binaria personalizada, por ejemplo,, especifique su identificador de función.customFunction'BinaryLoss',@customFunction

    debe tener este formulario donde:customFunction

    bLoss = customFunction(M,s)

    • es la matriz-por-codificación almacenada en.MKLMdl.CodingMatrix

    • es el vector 1 por fila de las puntuaciones de clasificación.sL

    • es la pérdida de clasificación.bLoss Este escalar agrega las pérdidas binarias para cada alumno en una clase determinada. Por ejemplo, puede usar la pérdida binaria media para agregar la pérdida sobre los alumnos de cada clase.

    • es el número de clases.K

    • es el número de estudiantes binarios.L

    Para obtener un ejemplo de cómo pasar una función de pérdida binaria personalizada, consulte.Predecir etiquetas de muestra de prueba de modelo ECOC utilizando la función de pérdida binaria personalizada

De forma predeterminada, si todos los alumnos binarios son modelos de clasificación lineal utilizando:

  • SVM, entonces esBinaryLoss'hinge'

  • La regresión logística, a continuación, esBinaryLoss'quadratic'

Ejemplo: 'BinaryLoss','binodeviance'

Tipos de datos: char | string | function_handle

Esquema de decodificación que agrega las pérdidas binarias, especificadas como el par separado por comas que consta de y o.'Decoding''lossweighted''lossbased' Para obtener más información, consulte.Pérdida binaria

Ejemplo: 'Decoding','lossbased'

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

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

ValorDescripción
'average'Devuelve los bordes de clasificación promediado sobre todos los pliegues
'individual'Devuelve los bordes de clasificación para cada pliegue

Ejemplo: 'Mode','individual'

Opciones de estimación, especificadas como el par separado por comas que consta de una matriz de estructura devuelta por.'Options'statset

Para invocar la computación paralela:

  • Necesitas una licencia.Parallel Computing Toolbox™

  • Especificar.'Options',statset('UseParallel',true)

Nivel de verbosidad, especificado como el par separado por comas que consta de y o. controla el número de mensajes de diagnóstico que el software muestra en la ventana de comandos.'Verbose'01Verbose

Si es, entonces el software no visualiza los mensajes de diagnóstico.Verbose0 De lo contrario, el software muestra mensajes de diagnóstico.

Ejemplo: 'Verbose',1

Tipos de datos: single | double

Argumentos de salida

expandir todo

Validado de forma cruzada, devuelto como un escalar numérico, Vector o matriz.bordes de clasificación

Dejar L ser el número de fortalezas de regularización en los modelos de validación cruzada (es decir, es) yLnumel(CVMdl.Trained{1}.BinaryLearners{1}.Lambda) F ser el número de pliegues (almacenados en).CVMdl.KFold

  • Si es así, entonces es un 1-por-Mode'average'eL Vector. e(j) es el borde de clasificación promedio sobre todos los pliegues del modelo validado por Cruz que utiliza la fuerza de regularización j.

  • De lo contrario, es une FporL Matriz. e(i,j) es el borde de clasificación para el pliegue i del modelo de validación cruzada que utiliza la fuerza de regularización 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

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

Validar de forma cruzada un modelo de clasificación lineal multiclase.

rng(1); % For reproducibility  CVMdl = fitcecoc(X,Y,'Learner','linear','CrossVal','on');

es un modelo.CVMdlClassificationPartitionedLinearECOC 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 los bordes desdoblados.

e = kfoldEdge(CVMdl)
e = 0.7232 

Como alternativa, puede obtener los bordes por pliegue especificando el par nombre-valor en.'Mode','individual'kfoldEdge

Una forma de realizar la selección de características es comparar los bordes de varios modelos.k Basado únicamente en este criterio, el clasificador con el borde más alto es el mejor clasificador.

Cargue el conjunto de datos NLP. Preprocese los datos como en y Oriente los Datos predictores para que las observaciones se correspondan con las columnas.El borde de validación cruzada de estimación doblek

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

Cree estos dos conjuntos de datos:

  • contiene todos los predictores.fullX

  • contiene un 1/2 de los predictores elegidos al azar.partX

rng(1); % For reproducibility p = size(X,1); % Number of predictors halfPredIdx = randsample(p,ceil(0.5*p)); fullX = X; partX = X(halfPredIdx,:);

Cree una plantilla de modelo de clasificación lineal que especifique la optimización de la función objetivo mediante SpaRSA.

t = templateLinear('Solver','sparsa');

Validación cruzada de dos modelos ECOC compuestos de modelos de clasificación lineal y binaria: uno que utiliza todos los predictores y uno que utiliza la mitad de los predictores. Indicar que las observaciones corresponden a columnas.

CVMdl = fitcecoc(fullX,Y,'Learners',t,'CrossVal','on',...     'ObservationsIn','columns'); PCVMdl = fitcecoc(partX,Y,'Learners',t,'CrossVal','on',...     'ObservationsIn','columns');

y son modelos.CVMdlPCVMdlClassificationPartitionedLinearECOC

Calcule el borde plegado para cada clasificador.k

fullEdge = kfoldEdge(CVMdl)
fullEdge = 0.3090 
partEdge = kfoldEdge(PCVMdl)
partEdge = 0.2617 

En función de las aristas de plegado, el clasificador que utiliza todos los predictores es el mejor modelo.k

Para determinar una buena resistencia a la penalización de lazo para un modelo de clasificación lineal que utiliza un aprendizaje de regresión logística, compare los bordes de plegado en k.

Cargue el conjunto de datos NLP. Preprocese los datos como en.Selección de características uso-plegado de aristask

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

Cree un conjunto de 8 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,8);

Cree una plantilla de modelo de clasificación lineal que especifique utilizar la regresión logística con una penalización de lazo, utilice cada una de las fortalezas de regularización, optimice la función objetiva utilizando SpaRSA y reduzca la tolerancia sobre el gradiente del objetivo función.1e-8

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

Valide de forma cruzada un modelo ECOC compuesto por modelos de clasificación binaria y lineal mediante validación cruzada de 5 veces y que

rng(10); % For reproducibility CVMdl = fitcecoc(X,Y,'Learners',t,'ObservationsIn','columns','KFold',5)
CVMdl =    classreg.learning.partition.ClassificationPartitionedLinearECOC     CrossValidatedModel: 'Linear'            ResponseName: 'Y'         NumObservations: 31572                   KFold: 5               Partition: [1×1 cvpartition]              ClassNames: [comm    dsp    simulink    others]          ScoreTransform: 'none'     Properties, Methods  

es un modelo.CVMdlClassificationPartitionedLinearECOC

Calcule los bordes de cada pliegue y la fuerza de regularización.

eFolds = kfoldEdge(CVMdl,'Mode','individual')
eFolds = 5×8

    0.5511    0.5520    0.5525    0.5514    0.4869    0.2933    0.1025    0.0857
    0.5257    0.5270    0.5270    0.5277    0.4801    0.2944    0.1049    0.0866
    0.5256    0.5265    0.5272    0.5276    0.4724    0.2884    0.1034    0.0866
    0.5386    0.5394    0.5405    0.5373    0.4824    0.2903    0.1009    0.0854
    0.5497    0.5551    0.5582    0.5575    0.4944    0.2939    0.1030    0.0849

es una matriz de 5 por 8 bordes.eFolds Las filas corresponden a pliegues y columnas corresponden a las fortalezas de regularización en.Lambda Puede utilizar para identificar los pliegues mal rendimiento, es decir, los bordes inusualmente bajos.eFolds

Calcule la arista media sobre todos los pliegues para cada fuerza de regularización.

e = kfoldEdge(CVMdl)
e = 1×8

    0.5382    0.5400    0.5411    0.5403    0.4832    0.2921    0.1029    0.0858

Determine qué tan bien se generalizan los modelos trazando los promedios del borde 5 veces para cada fuerza de regularización. Identifique la fuerza de regularización que maximiza el borde de 5 veces sobre la rejilla.

figure; plot(log10(Lambda),log10(e),'-o') [~, maxEIdx] = max(e); maxLambda = Lambda(maxEIdx); hold on plot(log10(maxLambda),log10(e(maxEIdx)),'ro'); ylabel('log_{10} 5-fold edge') xlabel('log_{10} Lambda') legend('Edge','Max edge') hold off

Varios valores de rendimiento de forma similar los bordes altos.Lambda Los valores de fuerza de regularización mayores 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 el borde empiece a disminuir.

LambdaFinal = Lambda(4);

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

t = templateLinear('Learner','logistic','Solver','sparsa',...     'Regularization','lasso','Lambda',LambdaFinal,'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

Más acerca de

expandir todo

Referencias

[1] Allwein, E., R. Schapire, and Y. Singer. “Reducing multiclass to binary: A unifying approach for margin classifiers.” Journal of Machine Learning Research. Vol. 1, 2000, pp. 113–141.

[2] Escalera, S., O. Pujol, and P. Radeva. “On the decoding process in ternary error-correcting output codes.” IEEE Transactions on Pattern Analysis and Machine Intelligence. Vol. 32, Issue 7, 2010, pp. 120–134.

[3] Escalera, S., O. Pujol, and P. Radeva. “Separability of ternary codes for sparse designs of error-correcting output codes.” Pattern Recogn. Vol. 30, Issue 3, 2009, pp. 285–297.

Capacidades ampliadas

Introducido en R2016a