22 votos

Primer paso para los macrodatos ( $N = 10^{10}$ , $p = 2000$ )

Supongamos que está analizando un enorme conjunto de datos con miles de millones de observaciones diarias, en el que cada observación tiene un par de miles de variables numéricas y categoriales dispersas y posiblemente redundantes. Digamos que hay un problema de regresión, un problema de clasificación binaria desequilibrada y una tarea de "averiguar qué predictores son los más importantes". Mi idea de cómo enfocar el problema es:

Ajustar algún modelo predictivo a submuestras (aleatorias) cada vez mayores de los datos hasta:

  1. El ajuste y la validación cruzada del modelo resultan difíciles desde el punto de vista computacional (por ejemplo, mi portátil va excesivamente lento, R se queda sin memoria, etc.), O bien

  2. Los valores de RMSE o precisión/recuperación de entrenamiento y prueba se estabilizan.

Si los errores de entrenamiento y prueba no se estabilizan (1.), utilice un modelo más sencillo y/o implemente versiones multinúcleo o multinodos del modelo y vuelva a empezar desde el principio.

Si los errores de entrenamiento y prueba se estabilizan (2.):

  • Si $N_{subset} \ll N$ (es decir, aún puedo ejecutar algoritmos en $X_{subset}$ ya que aún no es demasiado grande), intente mejorar el rendimiento ampliando el espacio de características o utilizando un modelo más complejo y volviendo a empezar desde el principio.

  • Si $N_{subset}$ es "grande" y realizar más análisis es costoso, analiza la importancia de la variable y termina.

Tengo previsto utilizar paquetes como biglm , speedglm , multicore et ff en R inicialmente, y más tarde utilizar algoritmos más complicados y/o multinodo (en EC2) según sea necesario.

¿Le parece un planteamiento razonable? En caso afirmativo, ¿tiene algún consejo o sugerencia concretos? Si no, ¿qué probaría en su lugar para un conjunto de datos de este tamaño?

2voto

gisnerd82 Puntos 84

Debería consultar los métodos en línea de regresión y clasificación para conjuntos de datos de este tamaño. Estos enfoques te permitirían utilizar todo el conjunto de datos sin tener que cargarlo en memoria.

También puede consultar Vowpal Wabbit (VW):

https://github.com/JohnLangford/vowpal_wabbit/wiki

Utiliza un método en línea fuera del núcleo, por lo que debería ser capaz de manejar un conjunto de datos de este tamaño. Puede hacer regresión y clasificación y tiene soporte para formatos dispersos. También puedes hacer versiones penalizadas (por ejemplo, regresión/clasificación de tipo lasso) en VW, lo que podría mejorar la precisión de tu modelo.

2voto

Adam Puntos 11

Yo sugeriría usar Hadoop y RMR (un paquete específico para Map Reduce en R). Con esta estrategia puedes ejecutar grandes conjuntos de datos en ordenadores comodity con una configuración asequible (probablemente en dos horas tengas Hadoop y RMR (RHadoop) instalados y funcionando).

De hecho, si tienes más de un ordenador puedes crear un cluster, reduciendo el tiempo de procesamiento.

Le facilito algunos enlaces que apoyan mi sugerencia:

  • Este enlace le llevará a un tutorial para instalar Hadoop en un clúster de un solo nodo (un ordenador).
  • Este enlace y esto enlace le mostrará cómo instalar RMR en su clúster Hadoop.
  • Y por último, ici puede encontrar un ejemplo de regresión logística mediante RHadoop.

Por lo tanto, mi consejo es que sigas estas directrices, ya que sin duda merece la pena si tus datos son enormes.

0voto

Chirag Shekhar Puntos 6

Esto es más un comentario que una respuesta, pero no puedo publicarlo como comentario (requiere 50 rep)..

¿Ha intentado utilizar el ACP en su conjunto de datos? Puede ayudarle a reducir el espacio de variables y a encontrar una posible dirección sobre qué variable excluir de su modelo de regresión. De este modo, el modelo será más fácil de calcular. Aquí puede encontrar un interesante debate sobre el uso de PCA con variables categóricas: ¿Puede aplicarse el análisis de componentes principales a conjuntos de datos que contengan una mezcla de variables continuas y categóricas?

Además, imagino que estás usando R por muchas razones (yo también uso R), pero puede ser más fácil usar un software como SAS o STATA. Funcionan mejor con big data y no tienes que lidiar con computación multinúcleo y paralela.

Por último, piense si tiene sentido utilizar el mayor número posible de filas de su conjunto de datos. ¿Se trata de un conjunto de datos de población, de un conjunto de datos de cuasipoblación o de un conjunto de datos de muestreo? Es posible que obtenga mejores resultados con un buen muestreo de su conjunto de datos que utilizando la totalidad de los datos. Eche un vistazo a este post: ¿Es relevante el muestreo en la era de los "grandes datos"?

Espero que esto ayude

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