Bosque aleatorio en una configuración de Big Data


8

Tengo un conjunto de datos con 5.818.446 líneas y 51 columnas, de las cuales 50 son predictores. Mi respuesta es cuantitativa, así que estoy interesado en un modelo de regresión. Estoy tratando de ajustar un bosque aleatorio a mis datos usando el paquete caret. Sin embargo, no tengo suficiente RAM para hacerlo.

He estado buscando soluciones a mi problema. Además de tener una computadora más poderosa, parece que puedo usar el embolsado para resolver mi problema. Por lo tanto, mi idea es la siguiente:

  1. Crear particiones de entrenamiento y prueba desde mi conjunto de datos original

  2. Muestra con reemplazo de una pequeña parte de mi conjunto de datos del tren en R (digamos 1%, es decir, 58,185 líneas)

  3. Ajustar un bosque aleatorio a esta pequeña parte de datos

  4. Guardar el resultado del modelo

  5. Repita los pasos 2-4 1,000 veces

  6. Combina estos 1,000 modelos obtenidos de los pasos 2-5

Sin embargo, el bosque aleatorio en sí mismo usa el embolsado para ajustar el modelo a los datos y, por lo tanto, no estoy seguro de si mi enfoque es correcto. Por lo tanto, tengo algunas preguntas para ti:

i) ¿Es correcto mi enfoque? Quiero decir, dado que no tengo suficiente RAM en mi sistema, ¿es correcto ajustar muchos modelos de bosque aleatorios diferentes a diferentes fragmentos de datos y combinarlos después?

ii) Suponiendo que mi enfoque es correcto, ¿el 1% de los datos es una buena regla general para el tamaño de mi muestra? Incluso con el 1% de los datos, todavía tengo .nortepags

iii) Suponiendo que mi enfoque es correcto, ¿hay varias réplicas para los modelos que debería usar? Pensé en 1,000 por razones.


Dado que el ensacado es un método para generar cada árbol de decisión en un bosque aleatorio, ¿qué tal si solo haces un DT por 1% y luego combinas los árboles ? Voila, un bosque al azar casero. Luego puede construir 1000 o más árboles y hacer combinaciones aleatorias de árboles para ver qué funciona mejor en sus datos de prueba; aunque entonces estás ajustando tus datos de prueba, así que tal vez solo tómalos todos y corre con ellos.
Engineero

Ooo! O combínelos todos con una capa de salida totalmente conectada y luego entrene esa capa con l1regularización, que generalmente reduce el peso de los componentes insignificantes a casi cero, para que pueda ver mediante inspección qué árboles debe mantener.
Engineero

@Engineero El método que describe es generalmente conocido como "fregaderos de cocina al azar": ajuste a un gran número de alumnos débiles para formar una representación básica de las características originales (incluso tocones de decisión) y luego ponderar los nodos terminales, tal vez con cierta regularización de los pesos de los nodos . people.eecs.berkeley.edu/~brecht/kitchensinks.html
Sycorax dice que reinstala a Monica

1 / No tengo ningún conocimiento definitivo, así que no estoy publicando una respuesta. Pero este método debería estar bien. Tenga en cuenta que el número de muestras en cada "lote" implica un límite superior en la profundidad de cada árbol y, por lo tanto, la capacidad de cada árbol para ajustar los datos, por lo que puede considerar ajustar más del 0.5%, 1%, 2%, 4 % (nocionalmente) ... de los datos al generar cada árbol. El número de árboles a utilizar es puramente una cuestión de en qué punto las "mesetas" de pérdida del modelo; No es necesario ajustar esta opción, ya que la pérdida esperada es una función monotónica decreciente de para reglas de puntuación adecuadas continuas. T
Sycorax dice Reinstate Monica

2 / Para obtener más información sobre la cantidad de árboles, consulte mi respuesta aquí: stats.stackexchange.com/questions/348245/…
Sycorax dice Reinstate Monica

Respuestas:


3

Esto no aborda sus preguntas específicas, sino la motivación detrás de ellas. El bigRFpaquete puede resolver su problema:

Esta es una implementación R de los algoritmos Random Forest de Leo Breiman y Adele Cutler para clasificación y regresión, con optimizaciones para el rendimiento y para el manejo de conjuntos de datos que son demasiado grandes para ser procesados ​​en la memoria.

También:

Para grandes conjuntos de datos, los datos de entrenamiento, los cálculos intermedios y algunas salidas (por ejemplo, matrices de proximidad) pueden almacenarse en caché en el disco utilizando objetos "big.matrix". Esto permite construir bosques aleatorios en conjuntos de datos bastante grandes sin alcanzar los límites de RAM, lo que provocará un intercambio excesivo de memoria virtual por parte del sistema operativo.

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.