¿Por qué usar validación cruzada estratificada? ¿Por qué esto no daña el beneficio relacionado con la varianza?


29

Me han dicho que es beneficioso usar la validación cruzada estratificada, especialmente cuando las clases de respuesta no están equilibradas. Si un propósito de la validación cruzada es ayudar a explicar la aleatoriedad de nuestra muestra de datos de entrenamiento original, seguramente hacer que cada pliegue tenga la misma distribución de clase funcionaría en contra de esto a menos que esté seguro de que su conjunto de entrenamiento original tenía una distribución de clase representativa.

¿Mi lógica es defectuosa?

EDITAR Me interesa saber si este método daña el bien de CV. Puedo ver por qué es necesario si tiene una muestra pequeña / clases muy desequilibradas / ambas para evitar no tener un solo representante de la clase menor en un pliegue.

El documento Manzanas a manzanas en los estudios de validación cruzada: trampas en la medición del rendimiento del clasificador presenta bien el caso de la estratificación, pero todos los argumentos parecen equivaler a 'La estratificación proporciona una salvaguarda y más consistencia', pero no se requeriría una salvaguarda suficiente datos.

Es la respuesta simplemente "Lo usamos por necesidad, ya que rara vez tenemos suficientes datos". ?

Respuestas:


18

Bootstrapping busca simular el efecto de extraer una nueva muestra de la población, y no busca asegurar conjuntos de prueba distintos (residuos después del muestreo N de N con reemplazo).

La validación cruzada de RxK-fold asegura K pliegues de prueba distintos, pero luego se repite R veces para diferentes particiones aleatorias para permitir que las suposiciones de independencia se mantengan para K-CV, pero esto se pierde con la repetición.

La validación cruzada estratificada viola el principio de que las etiquetas de prueba nunca deberían haberse mirado antes de que se calculen las estadísticas, pero esto generalmente se considera inocuo ya que el único efecto es equilibrar los pliegues, pero conduce a la pérdida de diversidad ( una pérdida de varianza no deseada). Se aleja aún más de la idea de Boostrap de construir una muestra similar a la que extraería naturalmente de toda la población. Podría decirse que la razón principal por la que la estratificación es importante es abordar los defectos en los algoritmos de clasificación, ya que están demasiado sesgados por una representación excesiva o insuficiente de las clases. Esto afecta menos a un algoritmo que utiliza técnicas de equilibrio (ya sea mediante selección o ponderación) u optimiza una medida de posibilidad de corrección (Kappa o preferiblemente Información), aunque incluso tales algoritmos pueden '

Forzar que cada pliegue tenga al menos m instancias de cada clase, para algunos m pequeños, es una alternativa a la estratificación que funciona tanto para Bootstrapping como para CV. Tiene un sesgo de suavizado, por lo que los pliegues tienden a estar más equilibrados de lo que de otro modo se esperaría.

Reensamblaje y diversidad: si los clasificadores aprendidos en los pliegues de entrenamiento se usan para la fusión, no solo para estimar el error de generalización, la rigidez creciente de CV, Bootstrap estratificado y CV estratificado conduce a la pérdida de diversidad y potencialmente resistencia, en comparación con Bootstrap, Bootstrap forzado y forzado CV.


¿Sería posible proporcionar algunos documentos de referencia sobre cómo el bootstrap estratificado "falla" cuando el bootstrap forzado "es mejor"?
usεr11852 dice Reinstate Monic

16

Quizás puedas pensarlo de esta manera. Digamos que tiene un conjunto de datos donde hay 100 muestras, 90 en la clase 'A' y 10 en la clase 'B'. En este diseño muy desequilibrado, si haces grupos aleatorios normales, podrías terminar construyendo modelos en muy pocos (¡o NUNCA!) De la clase 'B'. Si está construyendo un modelo que está capacitado en datos donde hay tan pocos, o incluso ninguno, de la otra clase, ¿cómo podría esperar que prediga el grupo más raro de manera efectiva? La validación cruzada estratificada permite la aleatorización, pero también asegura que estos conjuntos de datos no balanceados tengan algunas de ambas clases.

Para calmar las preocupaciones sobre el uso de CV estratificado con conjuntos de datos más 'equilibrados', veamos un ejemplo usando el código R.

require(mlbench)
require(caret)
require(cvTools)

# using the Sonar dataset (208 samples)
data(Sonar)

# see the distribution of classes are very well balanced
prop.table(table(Sonar$Class))

> prop.table(table(Sonar$Class))

M         R 
0.5336538 0.4663462 

# stratified
# set seed for consistency
# caret::createFolds does stratified folds by default
set.seed(123)
strat <- createFolds(Sonar$Class, k=10)

# non-stratified using cvTools
set.seed(123)
folds <- cvFolds(nrow(Sonar), K=10, type="random")
df <- data.frame(fold = folds$which, index = folds$subsets)
non_strat <- lapply(split(df, df$fold), FUN=function(x) x$index)

# calculate the average class distribution of the folds
strat_dist <- colMeans(do.call("rbind", lapply(strat, FUN = function(x) prop.table(table(Sonar$Class[x])))))
    non_strat_dist <- colMeans(do.call("rbind", lapply(non_strat, FUN = function(x) prop.table(table(Sonar$Class[x])))))
strat_dist
> strat_dist
M         R 
0.5338312 0.4661688 
non_strat_dist
> non_strat_dist
M         R 
0.5328571 0.4671429 

Como puede ver, en un conjunto de datos que está bien equilibrado, los pliegues tendrán una distribución similar por azar. Por lo tanto, el CV estratificado es simplemente una medida de garantía en estas circunstancias. Sin embargo, para abordar la varianza, deberá observar las distribuciones de cada pliegue. En algunas circunstancias (incluso a partir de 50-50), podría tener pliegues que tienen divisiones de 30-70 por azar (¡puede ejecutar el código anterior y ver que esto realmente sucede!). Esto podría conducir a un modelo de peor desempeño porque no tenía suficiente de una clase para predecirlo con precisión, aumentando así la varianza CV general. Obviamente, esto es más importante cuando tiene muestras 'limitadas' donde es más probable que tenga diferencias muy extremas en la distribución.

Ahora con conjuntos de datos muy grandes, la estratificación puede no ser necesaria porque los pliegues serán lo suficientemente grandes como para contener al menos una buena proporción de la clase 'más rara'. Sin embargo, realmente no hay pérdida computacional ni razón real para renunciar a la estratificación si sus muestras están desequilibradas, sin importar cuántos datos tenga en mi opinión personal.


Sí, esto tiene sentido total. Sin embargo, este es un caso muy específico y lo está haciendo para dar cuenta de la falta de datos. Si tuviera 10,000 muestras, ¿lo haría? Mi pregunta es, idealmente y con suficientes datos, ¿es una buena idea?
James Owers

1
@kungfujam, depende de cuán desequilibrados estén sus datos. Incluso con enormes cantidades de datos, podría terminar con muy pocos de la otra clase (al azar). Hay algunas investigaciones al respecto. Aunque un poco anticuado, Kohavi informó que stratifcation is generally a better scheme, both in terms of bias and variance, when compared to regular cross-validation. No existe un esquema de muestreo perfecto, pero en diseños desequilibrados, la estratificación es un buen enfoque.
cdeterman

Gracias por esto. Acababa de encontrar el papel Kohavi. Viejo pero dorado. Puedo ver que, en general, las clases no están perfectamente equilibradas y los datos son limitados => la estratificación es generalmente mejor ... ¡pero dado un equilibrio razonable, siento que es una violación!
James Owers

@kungfujam, ¿qué parte consideras una violación? Los k-pliegues son aleatorios, excepto que requieren específicamente una cierta proporción de los diferentes grupos. Podrías pensar que crea aleatoriamente tus pliegues de cada grupo y los combina juntos para un pliegue agregado, conservando así la aleatorización que te preocupa. Dado un equilibrio razonable (por ejemplo, 60% -40%) es probable que tus pliegues tengan proporciones similares de todos modos con o sin estratificación (alguna variación, por supuesto).
cdeterman

1
Siento que derrota el punto. Su muestra original es 'aleatoria'. Como tal, pensé que se suponía que CV debía tratar de dar cuenta de esto, produciendo resamples variados, y llevarlo a producir un modelo más robusto a la varianza al penalizar los modelos que varían a medida que cambian los datos de entrada. Si restringe sus pliegues para que coincidan con las proporciones de la muestra original, sentí que, en cierto sentido, está evitando que lo haga. Es muy posible que produzca un modelo con un sesgo más bajo, pero creo que tendría una varianza más alta.
James Owers
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.