78 votos

Bosque aleatorio - Cómo manejar el sobreajuste

Tengo un ordenador de ciencias de fondo, pero estoy tratando de enseñar a mí mismo en ciencia de datos mediante la resolución de problemas en la red internet.

He estado trabajando en este problema para el último par de semanas (aprox 900 filas y 10 funciones). Yo estaba inicialmente mediante regresión logística, pero ahora me he cambiado a bosques aleatorios. Cuando ejecuto mi aleatoria bosque modelo en mis datos de entrenamiento que me pongo muy altos valores de auc (> 99%). Sin embargo, cuando ejecuto el mismo modelo en los datos de prueba los resultados no son tan buenos (Precisión de aproximadamente 77%). Esto me lleva a creer que yo soy más de ajuste de los datos de entrenamiento.

¿Cuáles son las mejores prácticas con respecto a la prevención de sobre adecuado en bosques aleatorios?

Estoy usando r y rstudio como mi entorno de desarrollo. Estoy usando el randomForest paquete y han aceptado los valores predeterminados para todos los parámetros

52voto

shyam Puntos 4133

Para evitar el sobre-ajuste en el bosque aleatorio, la principal cosa que usted necesita hacer es optimizar un parámetro de ajuste que regula el número de características que son elegidos al azar para crecer cada árbol desde el bootstrap de datos. Normalmente, esto se realiza a través de $k$-fold cross-validation, donde $k \in \{5, 10\}$, y elija el parámetro de ajuste que minimiza la muestra de la prueba del error de predicción. Además, el crecimiento de un mayor bosque de mejorar la precisión predictiva, aunque generalmente hay rendimientos decrecientes una vez que usted consiga hasta varios cientos de árboles.

45voto

Factor Mystic Puntos 12465

¿Cómo conseguir que el 99% de las AUC en los datos de su entrenamiento? Ser consciente de que hay una diferencia entre

predict(model)

y

predict(model, data=train)

al obtener predicciones para el conjunto de datos de entrenamiento. La primera opción presenta el fuera-de-bolsa de predicciones a partir de el bosque aleatorio. En general esto es lo que usted desea, cuando la comparación de los valores predichos con los valores reales de los datos de entrenamiento.

La segunda trata los datos de su entrenamiento, como si de un nuevo conjunto de datos y ejecuta las observaciones de cada árbol. Esto dará como resultado una artificialmente estrecha correlación entre las predicciones y los datos reales, ya que la RF algoritmo generalmente no podar los árboles individuales, confiando en cambio en el conjunto de árboles para el control de sobreajuste. Así que no hagas esto si desea obtener predicciones en los datos de entrenamiento.

11voto

Alexey Grigorev Puntos 1751

Para árboles de decisión hay dos formas de manejo de sobreajuste: (a) no crecen los árboles en su totalidad (b) podar

Lo mismo se aplica a un bosque de árboles que no crecen demasiado y podar.

Yo no uso randomForest mucho, pero para mi conocimiento, hay varios parámetros que se pueden usar para afinar sus bosques:

  • nodesize - tamaño mínimo de nodos terminales
  • maxnodes - máximo número de nodos terminales
  • mtry - número de variables utilizadas para construir el árbol de cada uno (gracias @user777)

2voto

EoghanM Puntos 1648

Puede que desee utilizar la cruz de validación de métodos, tales como K veces validación cruzada.

También puede ser que desee para comprobar que se han normalizado o escala de las características.

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