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 clasificación lineal, binario y validado.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, indique qué pliegues utilizar para el cálculo de arista.

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

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'

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

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

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 los bordes desdoblados.

e = kfoldEdge(CVMdl)
e = 8.1243 

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.El borde de validación cruzada de estimación doblek

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

Cree estos dos conjuntos de datos:

  • contiene todos los predictores.fullX

  • contiene 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,:);

Valide dos modelos binarios de clasificación lineal: uno que utilice todos los predictores y otro que utilice la mitad de los predictores. Optimice la función objetivo utilizando SpaRSA e indique que las observaciones corresponden a las columnas.

CVMdl = fitclinear(fullX,Ystats,'CrossVal','on','Solver','sparsa',...     'ObservationsIn','columns'); PCVMdl = fitclinear(partX,Ystats,'CrossVal','on','Solver','sparsa',...     'ObservationsIn','columns');

y son modelos.CVMdlPCVMdlClassificationPartitionedLinear

Calcule el borde plegado para cada clasificador.k

fullEdge = kfoldEdge(CVMdl)
fullEdge = 16.5629 
partEdge = kfoldEdge(PCVMdl)
partEdge = 13.9030 

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.El borde de validación cruzada de estimación doblek

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

Valide de forma cruzada un modelo de clasificación lineal y binario mediante la validación cruzada de 5 veces y que utilice 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: [1x1 cvpartition]              ClassNames: [0 1]          ScoreTransform: 'none'     Properties, Methods  

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

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

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

    0.9958    0.9958    0.9958    0.9958    0.9958    0.9924    0.9770    0.9227    0.8439    0.8127    0.8127
    0.9991    0.9991    0.9991    0.9991    0.9991    0.9938    0.9780    0.9203    0.8263    0.8128    0.8128
    0.9992    0.9992    0.9992    0.9992    0.9992    0.9942    0.9780    0.9207    0.8252    0.8128    0.8128
    0.9974    0.9974    0.9974    0.9974    0.9974    0.9931    0.9773    0.9156    0.8466    0.8130    0.8130
    0.9976    0.9976    0.9976    0.9976    0.9976    0.9942    0.9782    0.9194    0.8397    0.8127    0.8127

es una matriz de 5 por 11 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×11

    0.9978    0.9978    0.9978    0.9978    0.9978    0.9935    0.9777    0.9197    0.8363    0.8128    0.8128

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 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 el borde empiece 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.LambdaFinal

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

Introducido en R2016a