2012-03-15 16 views
30

Tôi hiện đang bắt tay vào một dự án sẽ thu thập và xử lý một lượng lớn dữ liệu (hàng trăm hợp đồng biểu diễn) và khai thác chúng để trích xuất dữ liệu có cấu trúc, được gọi là nhận dạng đối tượng, trùng lặp, phân loại, v.v.Học máy có quy mô lớn - Python hoặc Java?

Tôi quen thuộc với các công cụ ML từ cả Java và thế giới Python: Lingpipe, Mahout, NLTK, vv Tuy nhiên, khi nó đi xuống để chọn một nền tảng cho vấn đề quy mô lớn như vậy - tôi thiếu kinh nghiệm để quyết định giữa Java hoặc Python.

Tôi biết điều này nghe có vẻ giống như một câu hỏi mơ hồ, nhưng tôi đang tìm kiếm lời khuyên chung về việc chọn Java hoặc Python. JVM cung cấp hiệu suất tốt hơn (?) Trên Python, nhưng các thư viện như Lingpipe vv có khớp với hệ sinh thái Python không? Nếu tôi đã sử dụng Python này, nó sẽ dễ dàng mở rộng quy mô và quản lý nó trên nhiều máy tính như thế nào.

Tôi nên đi đến đâu và tại sao?

+3

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

+1

Thuật toán được sử dụng là quan trọng (hoặc nhiều hơn) so với ngôn ngữ trong các tác vụ ML quy mô lớn; ví dụ, kỹ thuật dựa trên eigenvector có thể không khả thi khi xử lý nhiều dữ liệu. Vì vậy, trong khi nó là giá trị suy nghĩ về các công cụ có sẵn của từng ngôn ngữ cho các vấn đề quy mô lớn, các thuật toán ML được sử dụng có thể thống trị hiệu suất. – Junier

+1

Câu hỏi của bạn rất thú vị nhưng cũng rất rộng, tôi thậm chí không biết tôi có thể đưa ra câu trả lời. Một lời khuyên sẽ là sử dụng Mahout (dự án từ Hadoop) trực tiếp giải quyết mối quan tâm của bạn. Cố gắng làm cho câu hỏi của bạn rõ ràng hơn và chi tiết hơn, hoặc nó có thể sẽ bị đóng ngay cả khi nó có tiềm năng. –

Trả lời

14

Vì Apache đang phát triển mạnh mẽ các công cụ tuyệt vời như Lucene/Solr/Nutch cho Tìm kiếm, Mahout cho Big Data Machine Learning, Hadoop cho Map Reduce, OpenNLP cho NLP, nhiều thứ NoSQL. Phần tốt nhất là "I" lớn, viết tắt của tích hợp và các sản phẩm này có thể được tích hợp với nhau cũng như tất nhiên trong hầu hết các tình huống mà họ (các sản phẩm này) bổ sung cho nhau.

Python cũng tuyệt vời nếu bạn xem xét ở trên từ ASF thì tôi sẽ đi với Java như Sean Owen. Python sẽ luôn luôn có sẵn cho ở trên nhưng chủ yếu là như Add on's và không phải là công cụ thực tế. Ví dụ bạn có thể làm Hadoop bằng cách sử dụng Python bằng cách sử dụng Streaming vv

Tôi chuyển đổi một phần từ C++ sang Java để sử dụng một số sản phẩm Apache rất phổ biến như Lucene, Solr & OpenNLP và các sản phẩm Java mã nguồn mở phổ biến khác như Neo4j & OrientDB.

9

Tôi nghĩ một điều lớn mà Java đã làm cho nó là Hadoop. Nếu bạn thực sự có nghĩa là quy mô lớn, bạn sẽ muốn có thể sử dụng một cái gì đó như thế. Nói chung Java có lợi thế về hiệu năng và nhiều thư viện hơn. Vì vậy: Java.

4

Nếu bạn đang tìm kiếm cơ sở dữ liệu NoSQL phù hợp với nhiệm vụ ML, thì Neo4J là một trong nhiều sản phẩm sẵn sàng (tương đối) và có khả năng xử lý BigData, nó có nguồn gốc từ JAVA nhưng đi kèm với REST API tuyệt đẹp hộp và do đó có thể được tích hợp với nền tảng bạn chọn. JAVA sẽ cung cấp cho bạn một hiệu suất cạnh ở đây.

Các vấn đề liên quan