Bosque aleatorio: ¿y si sé que una variable es importante?


12

Según tengo entendido, el bosque aleatorio elige aleatoriamente variables variables para construir cada árbol de decisión. Entonces, si mtry = ncol / 3, cada variable se usará en promedio en 1/3 de los árboles. Y 2/3 de los árboles no los usarán.

Pero, ¿y si sé que una sola variable es probablemente muy importante, sería bueno aumentar manualmente la probabilidad de que esta variable se elija en cada árbol? ¿Es factible con el paquete randomForest en R?

Respuestas:


6

Tenga en cuenta que mtryes el número de variables muestreadas al azar como candidatos en cada división. Y de estos candidatos, lo mejor se elige para realizar la división. Por lo tanto, la proporción que ha mencionado no está completamente satisfecha. Las variables más importantes aparecen con mayor frecuencia y menos importantes, con menos frecuencia. Entonces, si la variable es realmente muy importante, entonces hay una gran probabilidad de que se elija en un árbol y no necesite corrección manual. Pero a veces (rara vez) es necesario forzar la presencia de alguna variable (independientemente de su posible importancia) en la regresión. Hasta donde sé, el bosque aleatorio del paquete R no admite tal posibilidad. Pero si esta variable no tiene intercorrelación con otras, puede hacer una regresión ordinaria con esta variable como término único y luego ejecutar una regresión forestal aleatoria en los residuos de esta regresión ordinaria. Si aún desea corregir la posibilidad de elegir variables preespecificadas, entonces la modificación del código fuente con la próxima compilación es su opción.


2
Si necesita n árboles para obtener una aproximación decente para su función objetivo, pero está buscando una importancia variable, entonces puede establecer algo como 5 * no 10 * n árboles en el bosque. Convergirán más, no en un "error de ajuste" sino en un cambio de importancia variable.
EngrStudent - Restablece a Mónica el

5

Desde junio de 2015, un nuevo algoritmo de RF prometedor en R-CRAN llamado 'guardabosques' tiene esta característica. Se modifica con, split.select.weights : "Vector numérico con pesos entre 0 y 1, que representa la probabilidad de seleccionar variables para la división".

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.