Khung học máy mã nguồn mở mới được viết bằng Java PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Khung học máy mã nguồn mở mới được viết bằng Java

Tôi vui mừng thông báo rằng Khuôn khổ học máy Datumbox hiện có nguồn gốc mở theo GPL 3.0 và bạn có thể tải xuống mã của nó từ Github!

Khung này là gì?

Sản phẩm Khung học máy Datumbox là một khung công tác mã nguồn mở được viết bằng Java cho phép phát triển nhanh chóng các mô hình Học máy và các ứng dụng Thống kê. Đây là mã hiện đang hỗ trợ Datumbox API. Trọng tâm chính của khuôn khổ là bao gồm một số lượng lớn các thuật toán học máy & phương pháp thống kê và có thể xử lý các tập dữ liệu có kích thước vừa và nhỏ. Mặc dù khung nhắm mục tiêu để hỗ trợ phát triển các mô hình từ các lĩnh vực khác nhau, nó cũng cung cấp các công cụ đặc biệt hữu ích trong các ứng dụng Xử lý ngôn ngữ tự nhiên và Phân tích văn bản.

Những loại mô hình / thuật toán nào được hỗ trợ?

Khung công tác được chia thành nhiều Lớp như Học máy, Thống kê, Toán học, Thuật toán và Tiện ích. Mỗi người trong số họ cung cấp một loạt các lớp được sử dụng để đào tạo các mô hình học máy. Hai lớp quan trọng nhất là lớp Thống kê và lớp Học máy.

Lớp Thống kê cung cấp các lớp để tính toán thống kê mô tả, thực hiện nhiều loại lấy mẫu khác nhau, ước tính CDF và PDF từ các phân phối xác suất thường được sử dụng và thực hiện hơn 35 kiểm tra tham số và phi tham số. Các loại lớp như vậy thường cần thiết trong khi thực hiện phân tích dữ liệu giải thích, lấy mẫu và lựa chọn tính năng.

Lớp Học máy cung cấp các lớp có thể được sử dụng trong một số lượng lớn các bài toán bao gồm Phân loại, Hồi quy, Phân tích cụm, Mô hình hóa chủ đề, Giảm thứ nguyên, Lựa chọn tính năng, Học tập hợp và Hệ thống đề xuất. Dưới đây là một số thuật toán được hỗ trợ: LDA, Max Entropy, Naive Bayes, SVM, Bootstrap Aggregating, Adaboost, Kmeans, Hierarchical Clustering, Dirichlet Process Mixture Models, Softmax Regression, Ordinal Regression, Linear Regression, Stepwise Regression, PCA và hơn thế nữa.

Khung Datumbox VS Mahout VS Scikit-Tìm hiểu

Cả Mahout và Scikit-Learn đều là những dự án tuyệt vời và cả hai đều có những mục tiêu hoàn toàn khác nhau. Mahout chỉ hỗ trợ một số lượng rất hạn chế các thuật toán có thể được song song hóa và do đó sử dụng khung Map-Reduce của Hadoop để xử lý Dữ liệu lớn. Mặt khác, Scikit-Learn hỗ trợ một số lượng lớn các thuật toán nhưng nó không thể xử lý lượng dữ liệu khổng lồ. Hơn nữa, nó được phát triển bằng Python, là một ngôn ngữ tuyệt vời để tạo mẫu và Máy tính khoa học nhưng không phải là ngôn ngữ yêu thích của cá nhân tôi để phát triển phần mềm.

Datumbox Framework nằm ở giữa hai giải pháp. Nó cố gắng hỗ trợ một số lượng lớn các thuật toán và nó được viết bằng Java. Điều này có nghĩa là nó có thể được kết hợp dễ dàng hơn vào mã sản xuất, nó có thể được tinh chỉnh dễ dàng hơn để giảm mức tiêu thụ bộ nhớ và nó có thể được sử dụng trong các hệ thống thời gian thực. Cuối cùng, mặc dù Datumbox Framework hiện tại có khả năng xử lý các tập dữ liệu cỡ trung bình, tôi vẫn có kế hoạch mở rộng nó để xử lý các bộ dữ liệu có kích thước lớn.

Làm thế nào ổn định là nó?

Các phiên bản đầu tiên của khuôn khổ (lên đến 0.3.x) được phát triển vào tháng 2013 và tháng 2014 năm 0.4 và chúng được viết bằng PHP (yeap!). Trong tháng 0.5.0 và tháng XNUMX năm XNUMX (phiên bản XNUMX.x), khuôn khổ đã được viết lại bằng Java và được cải tiến với các tính năng bổ sung. Cả hai nhánh đều được thử nghiệm nhiều trong các ứng dụng thương mại bao gồm API Datumbox. Phiên bản hiện tại là XNUMX và nó có vẻ đủ trưởng thành để được phát hành dưới dạng phiên bản alpha công khai đầu tiên của khung. Phải nói rằng, điều quan trọng cần lưu ý là một số chức năng của khung công tác được kiểm tra kỹ lưỡng hơn những chức năng khác. Hơn nữa vì phiên bản này là alpha, bạn sẽ mong đợi những thay đổi mạnh mẽ trên các bản phát hành trong tương lai.

Tại sao tôi viết nó và tại sao tôi mã nguồn mở nó?

Sự tham gia của tôi với Học máy và NLP bắt đầu từ năm 2009 khi tôi đồng sáng lập WebSEOAnalytics.com. Kể từ đó, tôi đã phát triển việc triển khai các thuật toán học máy khác nhau cho các dự án và ứng dụng khác nhau. Thật không may, hầu hết các triển khai ban đầu rất cụ thể về vấn đề và chúng khó có thể được sử dụng trong bất kỳ vấn đề nào khác. Vào tháng 2013 năm XNUMX, tôi quyết định bắt đầu Datumbox như một dự án cá nhân và phát triển một khuôn khổ cung cấp các công cụ để phát triển các mô hình học máy tập trung vào lĩnh vực NLP và Phân loại văn bản. Mục tiêu của tôi là xây dựng một khuôn khổ sẽ được sử dụng lại trong tương lai để phát triển nhanh các mô hình học máy, kết hợp nó trong các dự án yêu cầu các thành phần học máy hoặc cung cấp nó như một dịch vụ (Machine Learning as a Service).

Và bây giờ tôi đang ở đây, một vài dòng mã sau đó, nguồn mở của dự án. Tại sao? Câu trả lời thành thật là tại thời điểm này, tôi không nằm trong kế hoạch trải qua hành trình “hãy xây dựng một hành trình khởi nghiệp mới”. Đồng thời, tôi cảm thấy rằng việc giữ mã trên đĩa cứng của tôi trong trường hợp tôi cần nó trong tương lai không có ý nghĩa gì. Vì vậy, điều hợp lý duy nhất cần làm là mã nguồn mở của nó. 🙂

Tài liệu?

Nếu bạn đọc hai đoạn trước, có lẽ bạn sẽ thấy điều này sắp xảy ra. Vì khung công tác không được phát triển với suy nghĩ rằng tôi sẽ chia sẻ nó với những người khác, nên tài liệu rất nghèo nàn / không tồn tại. Hầu hết các lớp và phương thức công khai không được nhận xét đúng và không có tài liệu nào mô tả kiến ​​trúc của mã. May mắn thay, tất cả các tên lớp đều có thể tự giải thích và khung công tác cung cấp các bài kiểm tra JUnit cho mọi phương pháp & thuật toán công khai và chúng có thể được sử dụng làm ví dụ về cách sử dụng mã. Tôi hy vọng rằng với sự giúp đỡ của cộng đồng, chúng tôi sẽ xây dựng một tài liệu thích hợp, vì vậy tôi rất tin tưởng vào bạn!

Hạn chế hiện tại và phát triển trong tương lai

Như trong mọi phần mềm (và đặc biệt là các dự án mã nguồn mở ở phiên bản alpha), Datumbox Machine Learning Framework có những hạn chế độc đáo và đáng yêu của riêng nó. Hãy cùng tìm hiểu chúng:

  1. Tài liệu: Như đã đề cập trước đó, tài liệu nghèo nàn.
  2. Không có đa luồng: Thật không may, khuôn khổ hiện không hỗ trợ Đa luồng. Tất nhiên chúng ta cần lưu ý rằng không phải tất cả các thuật toán học máy đều có thể được song song hóa.
  3. Ví dụ về mã: Vì khung công tác vừa được xuất bản, bạn không thể tìm thấy bất kỳ ví dụ mã nào trên web ngoài những ví dụ được cung cấp bởi khung công tác dưới dạng các bài kiểm tra JUnit.
  4. Cấu trúc mã: Việc tạo ra một kiến ​​trúc vững chắc cho bất kỳ dự án lớn nào luôn là một thách thức, chưa kể khi bạn phải đối phó với các thuật toán Học máy có sự khác biệt đáng kể (học có giám sát, học không giám sát, thuật toán giảm kích thước, v.v.).
  5. Độ bền của mô hình và thu thập dữ liệu lớn: Hiện tại, các mô hình có thể được đào tạo và lưu trữ trên các tệp trên đĩa hoặc trong cơ sở dữ liệu MongoDB. Để có thể xử lý số lượng lớn dữ liệu, các giải pháp khác phải được nghiên cứu. Ví dụ MapDB có vẻ như là một ứng cử viên tốt để lưu trữ dữ liệu và tham số trong khi đào tạo. Hơn nữa, điều quan trọng là phải loại bỏ bất kỳ 3rd các thư viện bên hiện đang xử lý sự tồn tại của các mô hình và phát triển một giải pháp mô-đun và khô khan tốt hơn.
  6. Các thuật toán mới /kiểm tra / mô hình: Có rất nhiều kỹ thuật tuyệt vời hiện không được hỗ trợ (đặc biệt là đối với phân tích chuỗi thời gian).

Thật không may, tất cả những điều trên là quá nhiều công việc và có quá ít thời gian. Đó là lý do tại sao nếu bạn quan tâm đến dự án, hãy tiếp tục và giúp tôi một tay với bất kỳ điều nào ở trên. Hơn nữa, tôi muốn nghe ý kiến ​​từ những người có kinh nghiệm trong các dự án nguồn mở vừa và lớn và có thể cung cấp bất kỳ mẹo nào về cách quản lý chúng. Ngoài ra, tôi sẽ biết ơn bất kỳ linh hồn dũng cảm nào dám nhìn vào mã và ghi lại một số lớp hoặc phương thức công khai. Cuối cùng nhưng không kém phần quan trọng nếu bạn sử dụng framework cho bất kỳ điều gì thú vị, vui lòng gửi cho tôi một dòng hoặc chia sẻ nó với một bài đăng trên blog.

Cuối cùng, tôi muốn cảm ơn tình yêu của tôi Kyriaki đã bao dung tôi trong khi viết dự án này, người bạn của tôi và là nhà phát triển siêu ninja-Java Eleftherios Bampaletakis để giúp đỡ các vấn đề Java quan trọng và bạn đã tham gia vào dự án. Tôi mong chờ ý kiến ​​của bạn.

Dấu thời gian:

Thêm từ Hộp dữ liệu