111 votos

Selección de características y validación cruzada

Recientemente he leído mucho en este sitio (@Aniko, @Dikran Marsupial, @Erik) y en otros lugares sobre el problema del sobreajuste que ocurre con la validación cruzada - (Smialowski et al 2010 Bioinformatics, Hastie, Elements of statistical learning). La sugerencia es que cualquier La selección supervisada de características (utilizando la correlación con las etiquetas de clase) realizada fuera de la estimación del rendimiento del modelo utilizando la validación cruzada (u otro método de estimación del modelo como el bootstrapping) puede dar lugar a un sobreajuste.

Esto me parece poco intuitivo: seguramente si se selecciona un conjunto de características y luego se evalúa el modelo utilizando sólo las características seleccionadas utilizando la validación cruzada, entonces se obtiene una estimación insesgada del rendimiento del modelo generalizado en esas características (esto supone que la muestra en estudio es representativa de la población)?

Por supuesto, con este procedimiento no se puede afirmar que el conjunto de características sea óptimo, pero sí se puede dar por válido el rendimiento del conjunto de características seleccionado en datos no vistos.

Acepto que la selección de características basada en todo el conjunto de datos puede dar lugar a alguna fuga de datos entre los conjuntos de prueba y de entrenamiento. Pero si el conjunto de características es estático después de la selección inicial, y no se realiza ningún otro ajuste, seguramente es válido informar de las métricas de rendimiento validadas de forma cruzada.

En mi caso tengo 56 funciones y 259 casos, por lo que #casos > #funciones. Las características se derivan de los datos de los sensores.

Pido disculpas si mi pregunta parece derivada, pero me parece un punto importante que hay que aclarar.

Editar: Al implementar la selección de características dentro de la validación cruzada en el conjunto de datos detallado anteriormente (gracias a las respuestas más abajo), puedo confirmar que la selección de características antes de la validación cruzada en este conjunto de datos introdujo un significativo de la tendencia. Este sesgo/sobreajuste fue mayor cuando se hizo para una formulación de 3 clases, en comparación con la formulación de 2 clases. Creo que el hecho de haber utilizado la regresión por pasos para la selección de características aumentó este sobreajuste; a efectos de comparación, en un conjunto de datos diferente pero relacionado, comparé una rutina de selección de características secuencial hacia delante realizada antes de la validación cruzada con los resultados que había obtenido previamente con la selección de características dentro de la CV. Los resultados entre ambos métodos no difirieron de forma drástica. Esto puede significar que la regresión escalonada es más propensa al sobreajuste que la FS secuencial o puede ser una peculiaridad de este conjunto de datos.

11 votos

No creo que eso sea (del todo) lo que Hastie, et al. defienden. El argumento general es que si la selección de características utiliza la respuesta entonces es mejor que se incluya como parte de su procedimiento de CV. Si hace una selección de predictores, por ejemplo, mirando sus varianzas muestrales y excluyendo los predictores con una variación pequeña, eso está bien como procedimiento único.

4 votos

+1 sin embargo, incluso en este caso la validación cruzada no representa la varianza en el proceso de selección de características, lo que podría ser un problema si la selección de características es inestable. Si se realiza el cribado en primer lugar, la variabilidad del rendimiento en cada pliegue no representará la verdadera variabilidad. Si realiza el cribado en cada pliegue, aumentará adecuadamente la variabilidad del rendimiento en cada pliegue. Yo siempre realizaría el cribado en cada uno de los pliegues si pudiera permitirme el gasto computacional.

2 votos

Creo que la afirmación "CUALQUIER selección de características realizada antes de la estimación del rendimiento del modelo utilizando la validación cruzada puede dar lugar a un sobreajuste" es una cita errónea o una tergiversación de lo que Hastie y otros sugieren. Si se cambia la palabra "previa" por "sin" tiene más sentido. Además, la frase parece sugerir que la validación cruzada es la única forma de probar legítimamente la idoneidad de las variables seleccionadas. El bootstrap, por ejemplo, podría ser otro enfoque legítimo.

103voto

John Richardson Puntos 1197

Si se realiza la selección de características en todos los datos y luego se hace una validación cruzada, los datos de prueba en cada pliegue del procedimiento de validación cruzada también se utilizaron para elegir las características y esto es lo que sesga el análisis de rendimiento.

Considere este ejemplo. Generamos algunos datos objetivo lanzando una moneda 10 veces y registrando si sale cara o cruz. A continuación, generamos 20 características lanzando la moneda 10 veces para cada característica y anotamos lo que obtenemos. A continuación, realizamos una selección de características eligiendo la que más se acerque a los datos objetivo y la utilizamos como predicción. Si hacemos una validación cruzada, obtendremos una tasa de error esperada ligeramente inferior a 0,5. Esto se debe a que hemos elegido la característica basándonos en una correlación tanto en el conjunto de entrenamiento como en el conjunto de prueba en cada pliegue del procedimiento de validación cruzada. Sin embargo, la tasa de error real va a ser de 0,5, ya que los datos de destino son simplemente aleatorios. Si realiza la selección de características de forma independiente en cada pliegue de la validación cruzada, el valor esperado de la tasa de error es 0,5 (lo cual es correcto).

La idea clave es que la validación cruzada es una forma de estimar el rendimiento de generalización de un proceso para construir un modelo, por lo que hay que repetir todo el proceso en cada pliegue. De lo contrario, acabarás con una estimación sesgada, o una subestimación de la varianza de la estimación (o ambas cosas).

HTH

Aquí hay un código de MATLAB que realiza una simulación de Monte-Carlo de esta configuración, con 56 características y 259 casos, para que coincida con su ejemplo, la salida que da es:

Estimador sesgado: erate = 0,429210 (0,397683 - 0,451737)

Estimador insesgado: erate = 0,499689 (0,397683 - 0,590734)

El estimador sesgado es aquel en el que la selección de características se realiza antes de la validación cruzada, el estimador insesgado es aquel en el que la selección de características se realiza de forma independiente en cada pliegue de la validación cruzada. Esto sugiere que el sesgo puede ser bastante grave en este caso, dependiendo de la naturaleza de la tarea de aprendizaje.

NF    = 56;
NC    = 259;
NFOLD = 10;
NMC   = 1e+4;

% perform Monte-Carlo simulation of biased estimator

erate = zeros(NMC,1);

for i=1:NMC

   y = randn(NC,1)  >= 0;
   x = randn(NC,NF) >= 0;

   % perform feature selection

   err       = mean(repmat(y,1,NF) ~= x);
   [err,idx] = min(err);

   % perform cross-validation

   partition = mod(1:NC, NFOLD)+1;
   y_xval    = zeros(size(y));

   for j=1:NFOLD

      y_xval(partition==j) = x(partition==j,idx(1));

   end

   erate(i) = mean(y_xval ~= y);

   plot(erate);
   drawnow;

end

erate = sort(erate);

fprintf(1, '  Biased estimator: erate = %f (%f - %f)\n', mean(erate), erate(ceil(0.025*end)), erate(floor(0.975*end)));

% perform Monte-Carlo simulation of unbiased estimator

erate = zeros(NMC,1);

for i=1:NMC

   y = randn(NC,1)  >= 0;
   x = randn(NC,NF) >= 0;

   % perform cross-validation

   partition = mod(1:NC, NFOLD)+1;
   y_xval    = zeros(size(y));

   for j=1:NFOLD

      % perform feature selection

      err       = mean(repmat(y(partition~=j),1,NF) ~= x(partition~=j,:));
      [err,idx] = min(err);

      y_xval(partition==j) = x(partition==j,idx(1));

   end

   erate(i) = mean(y_xval ~= y);

   plot(erate);
   drawnow;

end

erate = sort(erate);

fprintf(1, 'Unbiased estimator: erate = %f (%f - %f)\n', mean(erate), erate(ceil(0.025*end)), erate(floor(0.975*end)));

6 votos

Gracias, esto es muy útil. Si se adopta el enfoque sugerido, ¿cómo se evalúa el modelo final? Dado que tendrá varios conjuntos de características, ¿cómo elegirá el conjunto final de características? Históricamente también he informado de los resultados basados en una única validación cruzada con los parámetros del modelo y las características elegidas.

28 votos

Lo mejor es considerar la validación cruzada como la evaluación del rendimiento de un procedimiento para ajustar un modelo, en lugar del modelo en sí. Normalmente, lo mejor es realizar la validación cruzada como se ha indicado anteriormente y, a continuación, construir el modelo final con todo el conjunto de datos utilizando el mismo procedimiento empleado en cada pliegue del procedimiento de validación cruzada.

2 votos

En este caso, ¿estamos informando de los resultados de la clasificación basados en la validación cruzada (potencialmente muchos conjuntos de características diferentes) pero informando de que el modelo contiene sólo uno de esos conjuntos de características, es decir, los resultados de la clasificación de validación cruzada no coinciden necesariamente con el conjunto de características?

17voto

cbeleites Puntos 12461

Para añadir una descripción ligeramente diferente y más general del problema:

Si haces cualquier tipo de preprocesamiento de datos Por ejemplo

  1. optimización de los parámetros guiada por la validación cruzada / out-of-bootstrap
  2. reducción de la dimensionalidad con técnicas como PCA o PLS para producir la entrada del modelo (por ejemplo, PLS-LDA, PCA-LDA)
  3. ...

y quiere utilizar la validación cruzada/validación fuera de la base (/hold out) para estimar la final El rendimiento del modelo, el preprocesamiento basado en los datos debe realizarse en los datos de entrenamiento de los sustitutos, es decir, por separado para cada modelo de sustitutos.

Si el preprocesamiento de datos es del tipo 1., esto conduce a una validación cruzada "doble" o "anidada": la estimación de los parámetros se realiza en una validación cruzada utilizando sólo el conjunto de entrenamiento de la validación cruzada "externa". Los ElemStatLearn tienen una ilustración ( https://web.stanford.edu/~hastie/Papers/ESLII.pdf Página 222 de la impresión 5).

Se puede decir que el preprocesamiento es realmente parte de la construcción del modelo. sólo el preprocesamiento que se hace

  • independientemente para cada caso o
  • independientemente del conjunto de datos reales

puede sacarse del bucle de validación para ahorrar cálculos.

Así que al revés: si su modelo está completamente construido por el conocimiento externo al conjunto de datos concreto (por ejemplo, si decide de antemano por su conocimiento experto que los canales de medición 63 - 79 no pueden ayudar a resolver el problema, puede, por supuesto, excluir estos canales, construir el modelo y validarlo de forma cruzada. Lo mismo, si hace una regresión PLS y decide por su experiencia que 3 variables latentes son una elección razonable (pero hace no jugar sobre si 2 o 5 lv dan mejores resultados) entonces puede seguir con una validación normal fuera de la base/cruzada.

0 votos

Lamentablemente, el enlace para imprimir el libro ElemStatLearn 5 no funciona. Me preguntaba si la ilustración a la que se refiere sigue en la misma página. Por favor, mencione también el pie de foto.

0 votos

Entonces, si tengo dos conjuntos de datos, hago la selección/ingeniería de características en uno de ellos, y el CV en el otro, no habría problemas?

1 votos

@Milos: no, mientras esas características se conviertan en parámetros fijos para los modelos de validación cruzada, debería estar bien. Se trataría de una configuración adecuada de generación de hipótesis (= desarrollo de características en el conjunto de datos A) / prueba de hipótesis (= medición del rendimiento de las características ahora fijadas con el conjunto de datos B).

6voto

unk2 Puntos 36

Intentemos que sea un poco intuitivo. Consideremos este ejemplo: Usted tiene un dependiente binario y dos predictores binarios. Quiere un modelo con un solo predictor. Ambos predictores tienen una probabilidad de, digamos, el 95% de ser iguales a la dependiente y una probabilidad del 5% de no coincidir con la dependiente.

Ahora, por casualidad en sus datos un predictor es igual al dependiente en todos los datos en el 97% de las veces y el otro sólo en el 93% de las veces. Escogerá el predictor con el 97% y construirá sus modelos. En cada pliegue de la validación cruzada tendrá el modelo dependiente = predictor, porque casi siempre es correcto. Por lo tanto, obtendrá un rendimiento de predicción cruzada del 97%.

Ahora, usted podría decir, ok eso es sólo mala suerte. Pero si los predictores se construyen como se ha dicho anteriormente, hay un 75% de posibilidades de que al menos uno de ellos tenga una precisión superior al 95% en todo el conjunto de datos, y ése es el que se elegirá. Por lo tanto, hay un 75% de posibilidades de sobrestimar el rendimiento.

En la práctica, no es en absoluto trivial estimar el efecto. Es muy posible que su selección de características seleccione las mismas características en cada pliegue que si lo hiciera en todo el conjunto de datos y entonces no habrá sesgo. El efecto también se reduce si tiene muchas más muestras pero características. Podría ser instructivo utilizar ambas formas con sus datos y ver cómo difieren los resultados.

También podría reservar una cantidad de datos (por ejemplo, el 20%), utilizar tanto su forma como la forma correcta para obtener estimaciones de rendimiento mediante la validación cruzada en el 80% y ver qué predicción de rendimiento resulta más precisa cuando se transfiere el modelo al 20% de los datos reservados. Tenga en cuenta que, para que esto funcione, su selección de características antes de la CV también tendrá que hacerse sólo en el 80% de los datos. De lo contrario, no simulará la transferencia de su modelo a los datos fuera de su muestra.

0 votos

¿Podría explicar mejor la forma correcta de hacer la selección de características con su ejemplo intuitivo? Gracias.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X