2010-07-08 17 views
24

Necesito ejecutar varias técnicas de aprendizaje automático en un gran conjunto de datos (10-100 mil millones de registros) Los problemas son principalmente en minería de texto/extracción de información e incluyen varias técnicas de kernel pero no están restringidas a ellos (use algunos métodos bayesianos, bootstrapping, boosting de gradiente, árboles de regresión, muchos problemas diferentes y formas de resolverlos)Aprendizaje a gran escala

¿Cuál sería la mejor implementación? Tengo experiencia en ML pero no tengo mucha experiencia en cómo hacerlo para grandes conjuntos de datos ¿Hay alguna biblioteca Machine Learning extensible y personalizable que utilice la infraestructura de MapReduce Fuerte preferencia por C++, pero Java y python están bien Amazon Azure o centro de datos propio (podemos pagarlo)?

Respuesta

20

A menos que el espacio de estado de clasificación que está tratando de aprender sea extremadamente grande, esperaría que haya una redundancia significativa en un conjunto de datos centrado en la minería de texto con 10-100 mil millones de registros o muestras de capacitación. Como una aproximada suposición, dudo que uno necesite mucho más que un subconjunto de muestra aleatoria de 1-2% para aprender clasificadores confiables que se mantengan bien bajo las pruebas de validación cruzada.

Apareció una búsqueda bibliográfica rápida con los siguientes documentos relevantes. El documento Tsang reclama O (n) complejidad de tiempo para n muestras de capacitación, y hay un software relacionado disponible como LibCVM toolkit. El documento de Wolfe describe un enfoque de EM distribuido basado en MapReduce.

Por último, hubo una Large-Scale Machine Learning workshop en la conferencia NIPS 2009 que parece haber tenido muchas presentaciones interesantes y relevantes.

Referencias

Ivor W. Tsang, James T. Kwok, Pak-Ming Cheung (2005). "Core Vector Machines: Fast SVM Training on Very Large Data Sets", Journal of Machine Learning Research, vol 6, pp 363-392.

J Wolfe, A Haghighi, D Klein (2008). "Fully Distributed EM for Very Large Datasets", Actas de la 25ª Conferencia Internacional sobre Aprendizaje Automático, páginas 1184-1191.

Olivier Camp, Joaquim B. L. Filipe, Slimane Hammoudi y Mario Piattini (2005). "Mining Very Large Datasets with Support Vector Machine Algorithms", Enterprise Information Systems V, Springer Netherlands, pp 177-184.

0

Un amigo mío ha trabajado en un proyecto similar. Usó Perl para minería de textos y matlab para técnicas como métodos bayesianos, análisis semántico latente y mezcla gaussiana ...

+0

Uso solo un sistema realmente no cuenta como gran escala, y tampoco es lo que el OP solicitó. – Staffan

1

No conozco ninguna biblioteca de ML que pueda admitir 10 a 100 mil millones de registros, eso es un poco extremo, así que no esperaría encontrar nada fuera de la plataforma. Lo que recomendaría es que eche un vistazo a los ganadores del premio NetFlix: http://www.netflixprize.com//community/viewtopic.php?id=1537

El premio NetFlix tenía más de 100 millones de entradas, así que aunque no es tan grande como su conjunto de datos, puede encontrar que sus soluciones son aplicables. Lo que el equipo BelKor hizo fue combinar múltiples algoritmos (algo similar al aprendizaje conjunto) y ponderar la "predicción" o salida de cada algoritmo.

+0

Mahout/hadoop admite estas escalas –

1

No estoy al tanto de ninguna biblioteca ML que utilice map/reduce. ¿Tal vez tenga la capacidad de usar una biblioteca ML y una biblioteca Map/Reduce? Es posible que desee buscar en el Mapa/Reducir de Hadoop: http://hadoop.apache.org/mapreduce/

, tendría que implementar los métodos de reducción y mapa. El hecho de que uses tantas técnicas podría complicar esto.

puede ejecutarlo en su propio clúster o si está investigando quizás podría consultar BOINC (http://boinc.berkeley.edu/).

Por otro lado, quizás pueda reducir su conjunto de datos. No tengo idea de lo que está entrenando, pero debe haber alguna redundancia en 10 mil millones de registros ...

+0

Mahout es una biblioteca de aprendizaje automático que utiliza hadoop para el procesamiento –

1

Eche un vistazo a http://hunch.net/?p=1068 para obtener información sobre Vowpal Wabbit; es una biblioteca de descenso gradiente estocástica para aplicaciones a gran escala.

Cuestiones relacionadas