39 votos

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

Me han dicho que es beneficioso utilizar la validación cruzada estratificada, especialmente cuando las clases de respuesta están desequilibradas. Si uno de los propósitos de la validación cruzada es ayudar a tener en cuenta la aleatoriedad de nuestra muestra de datos de entrenamiento original, seguramente hacer que cada pliegue tenga la misma distribución de clases estaría trabajando en contra de esto a menos que esté seguro de que su conjunto de entrenamiento original tenía una distribución de clases representativa.

¿Es mi lógica errónea?

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

El papel Manzanas a manzanas en los estudios de validación cruzada: Escollos en la medición del rendimiento de los clasificadores expone bien los argumentos a favor de la estratificación, pero todos los argumentos parecen equivaler a "la estratificación proporciona una salvaguardia y más coherencia", pero no se necesitaría ninguna salvaguardia si se dispusiera de suficientes datos.

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

24voto

Heather Puntos 21

El 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 de N de N muestreos con reemplazo).

La validación cruzada RxK-fold garantiza K pliegues de prueba distintos, pero se repite R veces para diferentes particiones aleatorias para permitir que los supuestos 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 calcular las estadísticas, pero generalmente se piensa que esto es inocuo, ya que el único efecto es equilibrar los pliegues, pero conduce a la pérdida de diversidad (una pérdida no deseada de varianza). Se aleja aún más de la idea de Boostrap de construir una muestra similar a la que se obtendría de forma natural de toda la población. Podría decirse que la razón principal por la que la estratificación es importante es para abordar los defectos de los algoritmos de clasificación, ya que se ven sesgados con demasiada facilidad por la representación excesiva o insuficiente de las clases. Un algoritmo que utilice técnicas de equilibrio (ya sea por selección o ponderación) o que optimice una medida de azar correcta (Kappa o preferiblemente Informedness) se ve menos afectado por esto, aunque incluso tales algoritmos no pueden aprender o probar una clase que no existe.

Forzar que cada pliegue tenga al menos m instancias de cada clase, para un m pequeño, es una alternativa a la estratificación que funciona tanto para el Bootstrapping como para el CV. Tiene un sesgo de suavización, que hace que los pliegues tiendan a estar más equilibrados de lo que cabría esperar.

Sobre los conjuntos y la diversidad: Si los clasificadores aprendidos en los pliegues de entrenamiento se utilizan para la fusión y no sólo para la estimación del error de generalización, la creciente rigidez de CV, Bootstrap estratificado y CV estratificado conduce a la pérdida de diversidad, y potencialmente a la resiliencia, en comparación con Bootstrap, Bootstrap forzado y CV forzado.

19voto

llg179 Puntos 1

Tal vez pueda pensar en ello de esta manera. Supongamos que tiene un conjunto de datos en el que hay 100 muestras, 90 en la clase "A" y 10 en la clase "B". En este diseño tan desequilibrado, si se hacen grupos aleatorios normales, se podría acabar construyendo modelos con muy pocas muestras (¡o NINGUNA!) de la clase "B". Si se construye un modelo entrenado con datos en los que hay tan pocos, o incluso ninguno, de la otra clase, ¿cómo se puede esperar que prediga eficazmente el grupo más raro? La validación cruzada estratificada permite la aleatoriedad, pero también se asegura de que estos conjuntos de datos desequilibrados tengan algo de ambas clases.

Para apaciguar las preocupaciones sobre el uso del CV estratificado con conjuntos de datos más "equilibrados", veamos un ejemplo utilizando 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 bien equilibrado los pliegues tendrán una distribución similar por azar. Por lo tanto, el CV estratificado es simplemente una medida de seguridad en estas circunstancias. Sin embargo, para abordar la varianza habría que examinar las distribuciones de cada pliegue. En algunas circunstancias (incluso partiendo de un 50-50) se podrían tener pliegues con distribuciones de 30-70 por azar (¡se puede ejecutar el código anterior y ver que esto ocurre realmente!). Esto podría conducir a un modelo de peor rendimiento porque no tiene suficiente de una clase para predecir con precisión lo que aumenta la varianza general de CV. Obviamente, esto es más importante cuando se tienen muestras "limitadas" en las que es más probable que haya 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 seguir conteniendo probablemente al menos una buena proporción de la clase "más rara". Sin embargo, no hay realmente ninguna pérdida computacional y ninguna razón real para renunciar a la estratificación si sus muestras están desequilibradas no importa la cantidad de datos que tengas en mi opinión personal.

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