Loading [MathJax]/extensions/TeX/mathchoice.js

4 votos

¿por qué el bootstrap da lugar a un sobreajuste en la predicción de randomForest?

Estoy tratando con un conjunto de datos desequilibrados con el paquete R randomForest. Alguien ha sugerido que, Bootstrap sus datos, mientras que el exceso de muestreo de la clase rara y bajo el muestreo de la clase típica. Pero encontré que con el aumento del tamaño del remuestreo, el error OOB disminuye a cero, lo que mostró un severo sobreajuste, me pregunto por qué?
Esto también ocurre con el modelo de árbol(rpart).

He aquí un ejemplo, aunque los datos están equilibrados, sólo para probar el efecto del tamaño del remuestreo:

require(randomForest)
set.seed(0)
iris500=iris[sample(1:nrow(iris),size=500,replace=TRUE),]
iris2000=iris[sample(1:nrow(iris),size=2000,replace=TRUE),]
formula="Species~Sepal.Length+Sepal.Width+Petal.Length+Petal.Width"
(rf0=randomForest(as.formula(formula),data=iris)) #OOB estimate of  error rate: 4%
(rf1=randomForest(as.formula(formula),data=iris500)) #OOB estimate of  error rate: 0.4%
(rf2=randomForest(as.formula(formula),data=iris2000)) #OOB estimate of  error rate: 0%

table(iris[["Species"]]) 
#setosa versicolor virginica 
#  50       50        50

0 votos

¿Puedes mostrar el código que has utilizado para remuestrear (aumentar) tu clase rara? Yo diría que, en general, no deberías alterar demasiado tu conjunto de datos, suponiendo que refleje la realidad.

0 votos

¿Cuántas instancias tiene en iris ? ¿Es posible que exista la misma instancia en el conjunto de entrenamiento y en el de prueba debido al remuestreo?

1 votos

Hay 50 instancias para cada clase, puede ser que sea una razón, pero resultó una precisión del 100%. si es así, ¿cómo debo equilibrar mis datos a través de Bootstrap Resampling?

1voto

Pavneet Puntos 6

Supongo que se introduce un sesgo mediante el muestreo con reemplazos en el primer paso. Es probable que muchas observaciones no se incluyan en el conjunto de entrenamiento.

Hay 50 instancias de cada clase (3 clases 150 muestras). Definamos el número de muestras como n=150 . Definamos el número de "nuevas muestras" obtenidas por bootstrapping como k .

La probabilidad de que una muestra se incluya en su nuevo conjunto será igual a (según las combinaciones con los reemplazos): \frac{{{n+k-2} \choose {k-1}}}{{{n+k-1} \choose {k}}} = \frac{k}{n+k-1}

Para k = 500 esta probabilidad es igual a \frac{500}{649} = 0.77 .

Para k = 2000 esta probabilidad es igual a \frac{2000}{2149} = 0.93 .

Parece que está muy bien. Pero, creo que queremos que todas las muestras se incluyan en el conjunto recién creado.

Sin embargo, la probabilidad de que esto ocurra será muy baja:

Para k = 500 esta probabilidad será 0.77^n = 0.77^{150} = 9.4e-18 .

Para k = 2000 esta probabilidad será 0.93^n = 0.93^{150} = 1.87e-5 .

Supongo que se puede aumentar el valor de k hasta que la probabilidad de incluir todas las muestras en un conjunto recién creado sea cercana a 1. Sin embargo, algunos de los puntos tendrán mayor peso porque se muestrearán más veces. Y, en consecuencia, regirán el rendimiento de un clasificador.

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