2012-03-15 20 views
30

Actualmente me estoy embarcando en un proyecto que implica rastrear y procesar grandes cantidades de datos (cientos de gig), y también extraerlos para extraer datos estructurados, reconocimiento de entidad nombrada, deduplicación, clasificación, etc.Aprendizaje automático a gran escala: ¿Python o Java?

Estoy familiarizado con las herramientas de ML de Java y el mundo de Python: Lingpipe, Mahout, NLTK, etc. Sin embargo, cuando se trata de elegir una plataforma para un problema de tan gran escala, no tengo suficiente experiencia para decidir entre Java o Python.

Sé que esto suena como una pregunta vaga, pero estoy buscando consejos generales sobre cómo elegir Java o Python. La JVM ofrece un mejor rendimiento (?) Sobre Python, pero ¿son compatibles las bibliotecas como Lingpipe, etc. con el ecosistema de Python? Si fuera este Python, ¿qué tan fácil sería escalarlo y administrarlo en varias máquinas, etc.

¿Con cuál debo ir y por qué?

+3

[Jython] (http://www.jython.org/) :-) –

+1

Los algoritmos utilizados son tan importantes (o más) que el lenguaje en tareas ML a gran escala; por ejemplo, las técnicas basadas en vectores propios pueden ser inviables cuando se trata de una gran cantidad de datos. Entonces, si bien vale la pena pensar en las herramientas disponibles de cada idioma para problemas a gran escala, los algoritmos de ML utilizados pueden dominar el rendimiento. – Junier

+1

Su pregunta es muy interesante, pero también muy amplia, ni siquiera sé qué podría poner en una respuesta. Un consejo sería usar Mahout (proyecto de Hadoop) que aborda directamente su problema. Intenta hacer que tu pregunta sea mucho más explícita y detallada, o probablemente se cerrará incluso si tiene potencial. –

Respuesta

14

Como Apache va fuerte produciendo cosas excelentes como Lucene/Solr/Nutch for Search, Mahout para Big Data Machine Learning, Hadoop para Map Reduce, OpenNLP para NLP, muchas cosas de NoSQL. La mejor parte es la gran "I" que significa integración y estos productos se pueden integrar entre sí y, por supuesto, en la mayoría de las situaciones ellos (estos productos) se complementan entre sí.

Python también es genial, sin embargo, si se tiene en cuenta anteriormente de ASF, entonces iré con Java como Sean Owen. Python siempre estará disponible para lo anterior, pero sobre todo como Add on's y no como material real. Por ejemplo, puede hacer Hadoop usando Python usando Streaming, etc.

Cambié parcialmente de C++ a Java para utilizar algunos de los productos Apache muy populares como Lucene, Solr & OpenNLP y también otros productos populares Java de código abierto NoSQL como Neo4j & OrientDB.

9

Creo que una gran cosa que Java tiene a su favor es Hadoop. Si realmente quieres decir a gran escala, querrás poder usar algo así. En general, Java tiene la ventaja de rendimiento y más bibliotecas disponibles. Entonces: Java.

4

Si está buscando bases de datos NoSQL aptas para tareas ML, entonces Neo4J es una de las más preparadas para producción (relativamente) y es capaz de manejar BigData, es nativa de JAVA pero viene con una API REST hermosa fuera de la caja y por lo tanto se puede integrar con la plataforma de su elección. JAVA te dará una ventaja de rendimiento aquí.

Cuestiones relacionadas