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

El clasificador de la máquina de vectores de soporte (SVM) de validación cruzada

Descripción

ejemplo

CVSVMModel = crossval(SVMModel) Devuelve un clasificador () de una máquina de vectores de soporte (SVM) de validación cruzada (con particiones) de un clasificador de SVM entrenado ().CVSVMModelSVMModel De forma predeterminada, utiliza la validación cruzada de 10 veces en los datos de entrenamiento para crear un clasificador.crossvalCVSVMModelClassificationPartitionedModel

ejemplo

CVSVMModel = crossval(SVMModel,Name,Value) Devuelve un clasificador SVM 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 la proporción de muestra de exclusión.

Ejemplos

contraer todo

Cargue el conjunto de datos.ionosphere

load ionosphere rng(1); % For reproducibility

Entrenar un clasificador SVM. Estandarice los Datos predictores y especifique el orden de las clases.

SVMModel = fitcsvm(X,Y,'Standardize',true,'ClassNames',{'b','g'});

es un clasificador entrenado. es la clase negativa y es la clase positiva.SVMModelClassificationSVM'b''g'

Valide el clasificador mediante una validación cruzada de 10 veces.

CVSVMModel = crossval(SVMModel)
CVSVMModel =    classreg.learning.partition.ClassificationPartitionedModel     CrossValidatedModel: 'SVM'          PredictorNames: {1x34 cell}            ResponseName: 'Y'         NumObservations: 351                   KFold: 10               Partition: [1x1 cvpartition]              ClassNames: {'b'  'g'}          ScoreTransform: 'none'     Properties, Methods  
FirstModel = CVSVMModel.Trained{1}
FirstModel =    classreg.learning.classif.CompactClassificationSVM              ResponseName: 'Y'     CategoricalPredictors: []                ClassNames: {'b'  'g'}            ScoreTransform: 'none'                     Alpha: [78x1 double]                      Bias: -0.2209          KernelParameters: [1x1 struct]                        Mu: [1x34 double]                     Sigma: [1x34 double]            SupportVectors: [78x34 double]       SupportVectorLabels: [78x1 double]     Properties, Methods  

es un clasificador con validación cruzada.CVSVMModelClassificationPartitionedModel Durante la validación cruzada, el software completa estos pasos:

  1. Particionar aleatoriamente los datos en 10 conjuntos de igual tamaño.

  2. Entrena un clasificador SVM en nueve de los sets.

  3. Repita los pasos 1 y 2 = 10 veces.k El software deja fuera una partición cada vez y entrena en las otras nueve particiones.

  4. Combine las estadísticas de generalización para cada pliegue.

es el primero de los 10 clasificadores entrenados.FirstModel Es un clasificador.CompactClassificationSVM

Puede estimar el error de generalización pasando a.CVSVMModelkfoldLoss

Especifique una proporción de muestra de exclusión para la validación cruzada. De forma predeterminada, utiliza la validación cruzada de 10 veces para validar un clasificador de SVM.crossval Sin embargo, tiene varias otras opciones para la validación cruzada. Por ejemplo, puede especificar un número diferente de pliegues o una proporción de muestra de exclusión.

Cargue el conjunto de datos.ionosphere

load ionosphere rng(1); % For reproducibility

Entrenar un clasificador SVM. Estandarice los datos y especifique que es la clase positiva.'g'

SVMModel = fitcsvm(X,Y,'Standardize',true,'ClassNames',{'b','g'});

es un clasificador entrenado.SVMModelClassificationSVM

Valide de forma cruzada el clasificador especificando una muestra de retención del 15%.

CVSVMModel = crossval(SVMModel,'Holdout',0.15)
CVSVMModel =    classreg.learning.partition.ClassificationPartitionedModel     CrossValidatedModel: 'SVM'          PredictorNames: {1x34 cell}            ResponseName: 'Y'         NumObservations: 351                   KFold: 1               Partition: [1x1 cvpartition]              ClassNames: {'b'  'g'}          ScoreTransform: 'none'     Properties, Methods  

es un.CVSVMModelClassificationPartitionedModel

Mostrar las propiedades del clasificador entrenado con el 85% de los datos.

TrainedModel = CVSVMModel.Trained{1}
TrainedModel =    classreg.learning.classif.CompactClassificationSVM              ResponseName: 'Y'     CategoricalPredictors: []                ClassNames: {'b'  'g'}            ScoreTransform: 'none'                     Alpha: [74x1 double]                      Bias: -0.2952          KernelParameters: [1x1 struct]                        Mu: [1x34 double]                     Sigma: [1x34 double]            SupportVectors: [74x34 double]       SupportVectorLabels: [74x1 double]     Properties, Methods  

es un clasificador entrenado utilizando el 85% de los datos.TrainedModelCompactClassificationSVM

Calcule el error de generalización.

kfoldLoss(CVSVMModel)
ans = 0.0769 

El error de clasificación errónea fuera de muestra es aproximadamente del 8%.

Argumentos de entrada

contraer todo

Clasificador SVM completo y entrenado, especificado como un modelo entrenado con.ClassificationSVMfitcsvm

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 cinco pliegues en un modelo con validación cruzada.crossval(SVMModel,'KFold',5)

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'

Sugerencias

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

Funcionalidad alternativa

En lugar de entrenar un clasificador SVM y, a continuación, validarlo de forma cruzada, puede crear un clasificador con validación cruzada directamente mediante el uso y la especificación de cualquiera de estos argumentos de par nombre-valor:,,, o.fitcsvm'CrossVal''CVPartition''Holdout''Leaveout''KFold'

Introducido en R2014a