¿Existe una implementación de Bosque aleatorio que funcione bien con datos muy escasos?

23

¿Existe una implementación de bosque aleatorio R que funcione bien con datos muy escasos? Tengo miles o millones de variables de entrada booleanas, pero solo cientos más o menos serán VERDADERAS para cualquier ejemplo dado.

Soy relativamente nuevo en R y noté que hay un paquete 'Matrix' para tratar con datos escasos, pero el paquete estándar 'randomForest' no parece reconocer este tipo de datos. Si es importante, los datos de entrada se producirán fuera de R y se importarán.

¿Algún consejo? También puedo considerar el uso de Weka, Mahout u otros paquetes.

Eryn
fuente
Por lo que puedo decir, no hay paquetes R para árboles de decisión dispersos. Creo que existen algoritmos para árboles de decisión dispersos, que, si se implementan en R, podrían usarse para construir bosques aleatorios.
Zach
2
Aquí hay un buen candidato: cs.cornell.edu/~nk/fest . Si puede exportar sus datos en formato libsvm, puede usar este programa de línea de comandos. Me encantaría ver un puerto R ...
Zach
Zach: el enlace parece estar muerto.
Benoit_Plante
2
@ cmoibenlepro el enlace es lowrank.net/nikos/fest
seanv507
Link funcionó bien para mí
David Marx

Respuestas:

13

No, no hay implementación de RF para datos dispersos en R. Parcialmente porque RF no encaja muy bien en este tipo de problema: el empaquetamiento y la selección subóptima de divisiones pueden desperdiciar la mayor parte del conocimiento del modelo en áreas de solo cero.

Pruebe algún método de kernel o piense mejor en convertir sus datos en una representación más exuberante con algunos descriptores (o use algún método de reducción de dimensionalidad).

usuario88
fuente
La respuesta de Hack-R señala el paquete xgboost, que es perfectamente capaz de hacer bosques aleatorios con matrices dispersas.
Edgar
7

En realidad, sí lo hay .

Es xgboost, que está hecho para aumentar el gradiente eXtreme. Este es actualmente el paquete de elección para ejecutar modelos con matrices dispersas en R para mucha gente, y como explica el enlace anterior, ¡puede usarlo para Random Forest ajustando los parámetros !

Hack-R
fuente
4

El paquete R "Ranger" debería hacer.

https://cran.r-project.org/web/packages/ranger/ranger.pdf

Una implementación rápida de bosques aleatorios, particularmente adecuada para datos de alta dimensión.

En comparación con randomForest, este paquete es probablemente la implementación de RF más rápida que he visto. Trata las variables categóricas de forma nativa.

amitos
fuente
-4

Hay un blog llamado Quick-R que debería ayudarte con los conceptos básicos de R.

R trabaja con paquetes. Cada paquete puede hacer algo diferente. Existen estos paquetes llamados "randomForests" que deberían ser exactamente lo que está pidiendo.

Tenga en cuenta que la escasez de datos generará problemas sin importar el método que aplique. Que yo sepa, es un problema muy abierto y la minería de datos en general es más un arte que una ciencia. Los bosques aleatorios funcionan muy bien en general, pero no siempre son el mejor método. Es posible que desee probar una red neuronal con muchas capas, eso podría ayudar.

Vincent
fuente
44
No, randomForest es notoriamente malo con datos escasos, de ahí toda la pregunta. El parámetro classwt no se implementa correctamente en randomForest. El sobremuestreo manual es un enfoque, pero desordena el error OOB. Por cierto, el paquete no se llama 'randomForests'.
smci
1
Las partes de esto que son verdaderas no son respuestas a la pregunta.
Sycorax dice Reinstate Monica