2012-03-15 2 views
30

현재 엄청난 양의 데이터 (수백 개의 기가)를 크롤링하고 처리하고 구조화 된 데이터 추출, 엔티티 인식, 중복 제거, 분류 등의 작업을 수행하는 프로젝트에 착수했습니다.대규모 기계 학습 - Python 또는 Java?

Lingpipe, Mahout, NLTK 등 Java와 Python 세계의 ML 도구에 익숙합니다. 그러나 이러한 대규모 문제에 대한 플랫폼을 선택하는 경우 Java 또는 Python을 결정할 충분한 경험이 없습니다.

나는 막연한 질문처럼 들리지만 나는 자바 나 파이썬 중 하나를 고르는 것에 대한 일반적인 조언을 찾고있다. JVM은 파이썬보다 더 나은 성능 (?)을 제공하지만 Lingpipe 등의 라이브러리는 파이썬 생태계와 일치합니까? 이 Python을 사용하면 얼마나 쉽게 확장하고 여러 대의 컴퓨터에서 관리 할 수 ​​있을까요?

내가 가지고 있어야하는 이유는 무엇입니까?

+3

[자이 썬] (http://www.jython.org/) :-) –

+1

사용 된 알고리즘은 대규모 ML 작업에서 언어와 마찬가지로 중요합니다. 예를 들어, 고유 벡터 기반의 기법은 많은 양의 데이터를 다룰 때 실현 불가능할 수 있습니다. 따라서 대규모 문제에 대한 각 언어의 사용 가능한 도구에 대해 생각해 볼 가치가 있지만 사용되는 ML 알고리즘이 성능을 좌우할 수 있습니다. – Junier

+1

귀하의 질문은 매우 흥미 롭습니다. 그러나 또한 매우 광범위합니다. 나는 대답에 무엇을 넣을 지조차 모릅니다. 조언은 Hadoop의 프로젝트 인 Mahout을 사용하여 직접 문제를 해결하는 것입니다. 귀하의 질문을보다 명확하고 상세하게 작성하십시오. 잠재적 가능성이 있다고하더라도 아마 닫힐 것입니다. –

답변

14

Apache는 Lucene/Solr/Nutch for Big Search, Big Data Machine Learning 용 Mahout, Map Reduce 용 Hadoop, NLP 용 OpenNLP, 많은 NoSQL 자료 등 뛰어난 기능을 제공합니다. 가장 중요한 부분은 통합을 의미하는 큰 "I"이며, 대부분의 상황에서 이들 제품이 서로 보완 될 수 있다는 것입니다.

파이썬은 위대한 것을 ASF에서 고려한다면 나는 Sean Owen과 같은 Java로 갈 것입니다. 파이썬은 항상 위의 것들을 사용할 수 있지만, 실제로는 애드온 (add on)과 실제 물건이 아닙니다. 예를 들어 Streaming 등을 사용하여 파이썬을 사용하여 Hadoop을 할 수 있습니다.

Lucene, Solr & OpenNLP 및 기타 인기있는 오픈 소스 NoSQL Java 제품과 같이 매우 인기있는 Apache 제품 중 일부를 활용하기 위해 부분적으로 C++에서 Java로 전환했습니다. Neo4j & OrientDB와 유사합니다.

9

자바가 해보려고하는 한 가지 중요한 요소가 하둡이라고 생각합니다. 큰 규모라면, 이와 비슷한 것을 사용할 수 있기를 바랍니다. 일반적으로 Java는 성능 이점과 더 많은 라이브러리를 사용할 수 있습니다. 그래서 : 자바.

4

ML 작업에 적합한 NoSQL 데이터베이스를 찾고 있다면 Neo4J는 더 많은 양산 준비가되어 있으며 (상대적으로) BigData를 처리 할 수 ​​있습니다. 이것은 Java 고유의 ​​것이지만 아름다운 REST API와 함께 제공됩니다. 상자를 선택하여 원하는 플랫폼과 통합 할 수 있습니다. JAVA가 여기에 성능 우위를 제공 할 것입니다.

관련 문제