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.

crossval

Validación cruzada del modelo de códigos de salida de corrección de errores multiclase (ECOC)

Descripción

ejemplo

CVMdl = crossval(Mdl) Devuelve un modelo () de códigos de salida de corrección de errores multiclase (ECOC) de validación cruzada (particionado) de un modelo ECOC entrenado ().CVMdlMdl De forma predeterminada, utiliza la validación cruzada de 10 veces en los datos de entrenamiento para crear un modelo.crossvalCVMdlClassificationPartitionedECOC

ejemplo

CVMdl = crossval(Mdl,Name,Value) Devuelve un modelo ECOC con particiones con opciones adicionales especificadas por uno o más argumentos de par nombre-valor. Por ejemplo, puede especificar el número de pliegues o una proporción de muestra de exclusión.

Ejemplos

contraer todo

Valide de forma cruzada un clasificador ECOC con los alumnos binarios de SVM y estime el error de clasificación generalizado.

Cargue el conjunto de datos de iris de Fisher. Especifique los datos del predictor y los datos de respuesta.XY

load fisheriris X = meas; Y = species; rng(1); % For reproducibility

Cree una plantilla SVM y estandarice los predictores.

t = templateSVM('Standardize',true)
t =  Fit template for classification SVM.                       Alpha: [0x1 double]              BoxConstraint: []                  CacheSize: []              CachingMethod: ''                 ClipAlphas: []     DeltaGradientTolerance: []                    Epsilon: []               GapTolerance: []               KKTTolerance: []             IterationLimit: []             KernelFunction: ''                KernelScale: []               KernelOffset: []      KernelPolynomialOrder: []                   NumPrint: []                         Nu: []            OutlierFraction: []           RemoveDuplicates: []            ShrinkagePeriod: []                     Solver: ''            StandardizeData: 1         SaveSupportVectors: []             VerbosityLevel: []                    Version: 2                     Method: 'SVM'                       Type: 'classification'  

es una plantilla de SVM.t La mayoría de las propiedades del objeto de plantilla están vacías. Al entrenar el clasificador ECOC, el software establece las propiedades aplicables a sus valores predeterminados.

Entrenar el clasificador ECOC y especificar el orden de la clase.

Mdl = fitcecoc(X,Y,'Learners',t,...     'ClassNames',{'setosa','versicolor','virginica'});

es un clasificador.MdlClassificationECOC Puede acceder a sus propiedades utilizando la notación de puntos.

Valide mediante validación cruzada con 10 veces.Mdl

CVMdl = crossval(Mdl);

es un clasificador ECOC con validación cruzada.CVMdlClassificationPartitionedECOC

Calcule el error de clasificación generalizada.

genError = kfoldLoss(CVMdl)
genError = 0.0400 

El error de clasificación generalizada es del 4%, lo que indica que el clasificador ECOC generaliza bastante bien.

Considere el conjunto de datos.arrhythmia Este conjunto de datos contiene 16 clases, 13 de las cuales están representadas en los datos. La primera clase indica que el sujeto no tiene arritmia, y la última clase indica que no se registra el estado de arritmia del sujeto. Las otras clases son niveles ordinales que indican la severidad de la arritmia.

Entrenar un clasificador ECOC con un diseño de codificación personalizado especificado por la descripción de las clases.

Cargue el conjunto de datos.arrhythmia Convierta a una variable y determine el número de clases.YCategórico

load arrhythmia Y = categorical(Y); K = unique(Y); % Number of distinct classes

Construya una matriz de codificación que describa la naturaleza de las clases.

OrdMat = designecoc(11,'ordinal'); nOrdMat = size(OrdMat); class1VSOrd = [1; -ones(11,1); 0]; class1VSClass16 = [1; zeros(11,1); -1]; OrdVSClass16 = [0; ones(11,1); -1]; Coding = [class1VSOrd class1VSClass16 OrdVSClass16,...     [zeros(1,nOrdMat(2)); OrdMat; zeros(1,nOrdMat(2))]];

Entrena un clasificador ECOC usando el diseño de codificación personalizado () y la computación paralela.Coding Especifique un conjunto de árboles de clasificación 50 potenciado con GentleBoost.

t = templateEnsemble('GentleBoost',50,'Tree'); options = statset('UseParallel',true); Mdl = fitcecoc(X,Y,'Coding',Coding,'Learners',t,'Options',options);
Starting parallel pool (parpool) using the 'local' profile ... Connected to the parallel pool (number of workers: 6). 

es un modelo.MdlClassificationECOC Puede acceder a sus propiedades utilizando la notación de puntos.

Valide mediante validación cruzada con 8-fold y computación paralela.Mdl

rng(1); % For reproducibility CVMdl = crossval(Mdl,'Options',options,'KFold',8);
Warning: One or more folds do not contain points from all the groups. 

Dado que algunas clases tienen baja frecuencia relativa, algunos pliegues no se entrenan mediante observaciones de esas clases. es un modelo ECOC con validación cruzada.CVMdlClassificationPartitionedECOC

Calcule el error de generalización utilizando la computación paralela.

error = kfoldLoss(CVMdl,'Options',options)
error = 0.3208 

El error de clasificación de validación cruzada es 32%, lo que indica que este modelo no se generaliza bien. Para mejorar el modelo, intente entrenar con un método de Boosting diferente, como RobustBoost, o un algoritmo diferente, como SVM.

Argumentos de entrada

contraer todo

Modelo ECOC de varias clases completo y entrenado, especificado como modelo entrenado con.ClassificationECOCfitcecoc

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

Ejemplo: especifica el uso de tres pliegues en un modelo con validación cruzada.crossval(Mdl,'KFold',3)

Partición de validación cruzada, especificada como el par separado por comas que consta de un objeto de partición creado por.'CVPartition'cvpartitioncvpartition El objeto de partición especifica el tipo de validación cruzada y la indización para los conjuntos de entrenamiento y validación.

Para crear un modelo con validación cruzada, puede usar uno de estos cuatro argumentos de par nombre-valor solamente:,,, o.CVPartitionHoldoutKFoldLeaveout

Ejemplo: Supongamos que crea una partición aleatoria para la validación cruzada de 5 veces en 500 observaciones mediante el uso de.cvp = cvpartition(500,'KFold',5) A continuación, puede especificar el modelo con validación cruzada mediante.'CVPartition',cvp

Fracción de los datos utilizados para la validación de exclusión, especificado como el par separado por comas que consta de y un valor escalar en el intervalo (0,1).'Holdout' Si usted especifica, después el software completa estos pasos:'Holdout',p

  1. Seleccione aleatoriamente y Reserve% de los datos como datos de validación y capacite al modelo con el resto de los datos.p*100

  2. Almacene el modelo compacto y entrenado en la propiedad del modelo con validación cruzada.Trained

Para crear un modelo con validación cruzada, puede usar uno de estos cuatro argumentos de par nombre-valor solamente:,,, o.CVPartitionHoldoutKFoldLeaveout

Ejemplo: 'Holdout',0.1

Tipos de datos: double | single

Número de pliegues que se utilizarán en un modelo con validación cruzada, especificado como el par separado por comas y que consta de un valor entero positivo mayor que 1.'KFold' Si usted especifica, después el software completa estos pasos:'KFold',k

  1. Particionar aleatoriamente los datos en sets.k

  2. Para cada conjunto, Reserve el conjunto como datos de validación y entrene el modelo utilizando el otro k – 1 Establece.

  3. Almacene los modelos compactos y entrenados en las celdas de un vector de celda a-por-1 en la propiedad del modelo validado de forma cruzada.kkTrained

Para crear un modelo con validación cruzada, puede usar uno de estos cuatro argumentos de par nombre-valor solamente:,,, o.CVPartitionHoldoutKFoldLeaveout

Ejemplo: 'KFold',5

Tipos de datos: single | double

Marca de validación cruzada de Leave-One-out, especificada como el par separado por comas que consta de y o.'Leaveout''on''off' Si especifica, a continuación, para cada una de las observaciones (donde está el número de observaciones excluyendo las observaciones faltantes, especificadas en la propiedad del modelo), el software completa estos pasos:'Leaveout','on'nnNumObservations

  1. Reservar la observación como datos de validación, y entrenar el modelo utilizando el otro – 1 observaciones.n

  2. Almacene los modelos compactos y entrenados en las celdas de un vector de celda-por-1 en la propiedad del modelo validado de forma cruzada.nnTrained

Para crear un modelo con validación cruzada, puede usar uno de estos cuatro argumentos de par nombre-valor solamente:,,, o.CVPartitionHoldoutKFoldLeaveout

Ejemplo: 'Leaveout','on'

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)

Sugerencias

  • Evalúe el rendimiento predictivo de los datos con validación cruzada utilizando los métodos y propiedades "kfold" de, comoMdlCVMdl kfoldLoss.

Funcionalidad alternativa

En lugar de entrenar un modelo ECOC y luego validarlo de forma cruzada, puede crear un modelo ECOC validado de forma cruzada directamente mediante el uso y la especificación de uno de estos argumentos de par nombre-valor:,,, o.fitcecoc'CrossVal''CVPartition''Holdout''Leaveout''KFold'

Capacidades ampliadas

Introducido en R2014b