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

Estimación de pérdidas mediante validación cruzada

Sintaxis

vals = crossval(fun,X)
vals = crossval(fun,X,Y,...)
mse = crossval('mse',X,y,'Predfun',predfun)
mcr = crossval('mcr',X,y,'Predfun',predfun)
val = crossval(criterion,X1,X2,...,y,'Predfun',predfun)
vals = crossval(...,'name',value)

Descripción

vals = crossval(fun,X) realiza una validación cruzada de 10 veces para la función, aplicada a los datos en.funX

es un identificador de función para una función con dos entradas, el subconjunto de entrenamiento y el subconjunto de pruebas de, de la siguiente manera:funXXTRAINXXTEST

testval = fun(XTRAIN,XTEST)

Cada vez que se llama, debe usar para ajustar un modelo y, a continuación, devolver algún criterio calculado sobre el uso de ese modelo ajustado.funXTRAINtestvalXTEST

puede ser un vector de columna o una matriz.X Filas de corresponden a observaciones; columnas corresponden a variables o características.X Cada fila de contiene el resultado de aplicar a un conjunto de pruebas.valsfun Si es un valor no escalar, lo convierte en un vector de fila mediante la indexación lineal y se almacena en una fila de.testvalcrossvalvals

vals = crossval(fun,X,Y,...) se utiliza cuando los datos se almacenan en variables separadas,,....XY Todas las variables (vectores de columna, matrices o matrices) deben tener el mismo número de filas. se llama con los subconjuntos de entrenamiento de,,..., seguidos de los subconjuntos de prueba de,,..., de la siguiente manera:funXYXY

testvals = fun(XTRAIN,YTRAIN,...,XTEST,YTEST,...)

mse = crossval('mse',X,y,'Predfun',predfun) Devuelve, un escalar que contiene una estimación de validación cruzada de 10 veces de error medio cuadrado para la función. puede ser un vector de columna, matriz o matriz de predictores. es un vector de columna de valores de respuesta. y debe tener el mismo número de filas.msepredfunXyXy

es un identificador de función llamado con el subconjunto de entrenamiento de, el subconjunto de entrenamiento y el subconjunto de prueba de la siguiente manera:predfunXyX

yfit = predfun(XTRAIN,ytrain,XTEST) 

Cada vez que se llama, debe usar y ajustar un modelo de regresión y, a continuación, devolver los valores ajustados en un vector de columna.predfunXTRAINytrainyfit Cada fila de contiene los valores previstos para la fila correspondiente de. calcula los errores cuadrados entre y el conjunto de pruebas de respuesta correspondiente y devuelve la media general en todos los conjuntos de pruebas.yfitXTESTcrossvalyfit

mcr = crossval('mcr',X,y,'Predfun',predfun) Devuelve, un escalar que contiene una estimación de validación cruzada de 10 veces la tasa de clasificación errónea (la proporción de muestras mal clasificadas) para la función.mcrpredfun La matriz contiene valores predictores y el vector contiene etiquetas de clase. debe usar y ajustar un modelo de clasificación y devolver como las etiquetas de clase pronosticadas para. calcula el número de clasificaciones erróneas entre y el conjunto de pruebas de respuesta correspondiente y devuelve la tasa de clasificación errónea general en todos los conjuntos de pruebas.XypredfunXTRAINYTRAINyfitXTESTcrossvalyfit

val = crossval(criterion,X1,X2,...,y,'Predfun',predfun)Dónde criterion es o, devuelve una estimación de validación cruzada de error medio cuadrado (para un modelo de regresión) o tasa de clasificación errónea (para un modelo de clasificación) con valores predictores en,,... y, respectivamente, valores de respuesta o etiquetas de clase. , , ... y debe tener el mismo número de filas. es un manejador de funciones llamado con los subconjuntos de entrenamiento de,,..., el subconjunto de entrenamiento de, y los subconjuntos de prueba de,,..., de la siguiente manera:'mse''mcr'X1X2yX1X2ypredfunX1X2yX1X2

yfit=predfun(X1TRAIN,X2TRAIN,...,ytrain,X1TEST,X2TEST,...) 

debe ser un vector de columna que contenga los valores ajustados.yfit

vals = crossval(...,'name',value) especifica uno o más pares de nombre/valor de parámetro opcionales de la tabla siguiente. Especificar name dentro de comillas simples.

NombreValor
holdout

Un escalar que especifica la relación o el número de observaciones para la validación cruzada de exclusión.p Cuando < <, se seleccionan aleatoriamente las observaciones para el conjunto de pruebas.0p1p*n Cuando se trata de un entero, las observaciones del conjunto de pruebas se seleccionan aleatoriamente.pp

kfold

Un entero positivo que es mayor que 1 especificando el número de pliegues de validación cruzada de plegado.kk

leaveout

Especifica la validación cruzada de Leave-One-out. El valor debe ser.1

mcreps

Un entero positivo que especifica el número de repeticiones de Montecarlo para la validación. Si la primera entrada de es o, devuelve la media de error cuadrado medio o tasa de clasificación errónea a través de todas las repeticiones de Montecarlo.crossval'mse''mcr'crossval De lo contrario, conmemora los valores de todas las repeticiones de Montecarlo a lo largo de la primera dimensión.crossvalvals

partition

Un objeto de lac cvpartition clase, especificando el tipo y la partición de validación cruzada.

stratify

Un vector de columna que especifica los grupos para la estratificación.group Tanto los conjuntos de entrenamiento como los de prueba tienen aproximadamente las mismas proporciones de clase que en. s, los vectores de caracteres vacíos, las cadenas vacías, los valores y los valores en se tratan como valores de datos faltantes y se omiten las filas correspondientes de los datos.groupNaN<missing><undefined>group

options

Una estructura que especifica si se ejecutará en paralelo y especifica la secuencia aleatoria o las secuencias. Cree la estructura con.optionsstatset Campos de opción:

  • : Se configura para que se calcule en paralelo.UseParalleltrue El valor predeterminado es.false

    Necesitas computación paralela.Parallel Computing Toolbox™

  • : Se configura para que se calcule en paralelo de forma reproducible.UseSubstreamstrue El valor predeterminado es.false Para calcular reproduciblemente, establezca un tipo que permita subsecuencias: o.Streams'mlfg6331_64''mrg32k3a'

  • — Un objeto o matriz de celdas que consta de un objeto de este tipo.StreamsRandStream Si no se especifica, utiliza la secuencia predeterminada.Streamscrossval

Sólo uno de,,, o puede especificarse, y no se puede especificar con.kfoldholdoutleaveoutpartitionpartitionstratify Si ambos y se especifican, la primera repetición Monte-Carlo utiliza la información de la partición en el objeto y se llama al método para generar nuevas particiones para cada una de las repeticiones restantes.partitionmcrepscvpartitionrepartition Si no se especifica ningún tipo de validación cruzada, el valor predeterminado es la validación cruzada de 10 veces.

Nota

Cuando se utiliza la validación cruzada con algoritmos de clasificación, se prefiere la estratificación. De lo contrario, algunos conjuntos de pruebas pueden no incluir observaciones de todas las clases.

Ejemplos

Ejemplo 1

Calcular el error cuadrado medio para la regresión utilizando la validación cruzada de 10 veces:

load('fisheriris'); y = meas(:,1); X = [ones(size(y,1),1),meas(:,2:4)];  regf=@(XTRAIN,ytrain,XTEST)(XTEST*regress(ytrain,XTRAIN));  cvMse = crossval('mse',X,y,'predfun',regf) cvMse =     0.1015

Ejemplo 2

Calcule la tasa de clasificación errónea utilizando la validación cruzada de 10 veces estratificada:

load('fisheriris'); y = species; X = meas; cp = cvpartition(y,'k',10); % Stratified cross-validation  classf = @(XTRAIN, ytrain,XTEST)(classify(XTEST,XTRAIN,... ytrain));  cvMCR = crossval('mcr',X,y,'predfun',classf,'partition',cp) cvMCR =     0.0200

Ejemplo 3

Calcule la matriz de confusión utilizando la validación cruzada de 10 veces estratificada:

load('fisheriris'); y = species; X = meas; order = unique(y); % Order of the group labels cp = cvpartition(y,'k',10); % Stratified cross-validation  f = @(xtr,ytr,xte,yte)confusionmat(yte,... classify(xte,xtr,ytr),'order',order);  cfMat = crossval(f,X,y,'partition',cp); cfMat = reshape(sum(cfMat),3,3) cfMat =     50     0     0      0    48     2      0     1    49

es la suma de 10 matrices de confusión de 10 conjuntos de pruebas.cfMat

Referencias

[1] Hastie, T., R. Tibshirani, and J. Friedman. The Elements of Statistical Learning. New York: Springer, 2001.

Capacidades ampliadas

Consulte también

Introducido en R2008a