Java PlatoBlockchain Data Intelligence로 작성된 새로운 오픈 소스 기계 학습 프레임워크. 수직 검색. 일체 포함.

Java로 작성된 새로운 오픈 소스 머신 러닝 프레임워크

Datumbox Machine Learning Framework는 이제 GPL 3.0에서 오픈 소스로 제공되며 다음 코드를 다운로드 할 수 있습니다. 깃허브!

이 프레임 워크는 무엇입니까?

XNUMXD덴탈의 Datumbox 기계 학습 프레임 워크 기계 학습 모델 및 통계 애플리케이션의 신속한 개발을 가능하게하는 Java로 작성된 오픈 소스 프레임 워크입니다. 현재 Datumbox API를 구동하는 코드입니다. 프레임 워크의 주요 초점은 많은 수의 기계 학습 알고리즘 및 통계 방법을 포함하고 중소 규모의 데이터 세트를 처리 할 수있는 것입니다. 프레임 워크는 다양한 분야의 모델 개발을 지원하는 것을 목표로하지만 자연어 처리 및 텍스트 분석 애플리케이션에 특히 유용한 도구도 제공합니다.

어떤 유형의 모델 / 알고리즘이 지원됩니까?

프레임 워크는 기계 학습, 통계, 수학, 알고리즘 및 유틸리티와 같은 여러 계층으로 나뉩니다. 그들 각각은 머신 러닝 모델 훈련에 사용되는 일련의 클래스를 제공합니다. 가장 중요한 두 계층은 통계 및 기계 학습 계층입니다.

통계 계층은 기술 통계량 계산, 다양한 유형의 샘플링 수행, 일반적으로 사용되는 확률 분포에서 CDF 및 PDF 추정 및 35 개가 넘는 모수 및 비모수 테스트를 수행하기위한 클래스를 제공합니다. 이러한 유형의 클래스는 일반적으로 설명 데이터 분석, 샘플링 및 기능 선택을 수행하는 동안 필요합니다.

기계 학습 계층은 분류, 회귀, 군집 분석, 주제 모델링, 차원 축소, 기능 선택, 앙상블 학습 및 추천 시스템을 포함한 많은 문제에서 클래스를 사용할 수 있도록합니다. 지원되는 알고리즘은 LDA, Max Entropy, Naive Bayes, SVM, Bootstrap Aggregating, Adaboost, Kmeans, 계층 적 클러스터링, Dirichlet Process Mixture Models, Softmax Regression, Ordinal Regression, Linear Regression, Stepwise Regression, PCA 등입니다.

Datumbox 프레임 워크 VS Mahout VS Scikit-Learn

Mahout과 Scikit-Learn은 모두 훌륭한 프로젝트이며 서로 다른 목표를 가지고 있습니다. Mahout은 병렬화 할 수있는 매우 제한된 수의 알고리즘 만 지원하므로 Hadoop의 Map-Reduce 프레임 워크를 사용하여 빅 데이터를 처리합니다. 반면 Scikit-Learn은 많은 수의 알고리즘을 지원하지만 대량의 데이터를 처리 할 수는 없습니다. 또한 Python으로 개발되었으며 프로토 타입 제작 및 과학 컴퓨팅을위한 훌륭한 언어이지만 소프트웨어 개발에서 개인적으로 선호하는 것은 아닙니다.

Datumbox Framework는 두 솔루션의 중간에 있습니다. 많은 수의 알고리즘을 지원하려고 시도하며 Java로 작성됩니다. 즉, 프로덕션 코드에 쉽게 통합 될 수 있으며 메모리 소비를 줄이기 위해 더 쉽게 조정할 수 있으며 실시간 시스템에서 사용할 수 있습니다. 마지막으로 현재 Datumbox Framework는 중간 크기의 데이터 세트를 처리 할 수 ​​있지만, 대규모 데이터 세트를 처리하도록 확장 할 계획입니다.

얼마나 안정적입니까?

프레임 워크의 초기 버전 (최대 0.3.x)은 2013 년 2014 월과 0.4 월에 개발되었으며 PHP (yeap!)로 작성되었습니다. 0.5.0 년 XNUMX 월과 XNUMX 월 (버전 XNUMX.x) 동안 프레임 워크는 Java로 다시 작성되었으며 추가 기능으로 향상되었습니다. 두 지점 모두 Datumbox API를 포함한 상용 응용 프로그램에서 철저하게 테스트되었습니다. 현재 버전은 XNUMX이며 프레임 워크의 첫 번째 공개 알파 버전으로 출시 될 정도로 성숙해 보입니다. 그러나 프레임 워크의 일부 기능은 다른 기능보다 철저하게 테스트되었습니다. 또한이 버전은 알파이므로 향후 릴리스에서 급격한 변경이 예상됩니다.

내가 쓴 이유와 오픈 소스 인 이유는 무엇입니까?

기계 학습 및 NLP에 대한 나의 참여는 WebSEOAnalytics.com을 공동 설립 한 2009 년으로 거슬러 올라갑니다. 그 이후로 다양한 프로젝트와 응용 프로그램을위한 다양한 기계 학습 알고리즘의 구현을 개발해 왔습니다. 불행히도 대부분의 원래 구현은 문제에 따라 다르며 다른 문제에서는 거의 사용할 수 없습니다. 2013 년 XNUMX 월 Datumbox를 개인 프로젝트로 시작하고 NLP 및 텍스트 분류 영역에 중점을 둔 기계 학습 모델을 개발하기위한 도구를 제공하는 프레임 워크를 개발하기로 결정했습니다. 저의 목표는 머신 러닝 구성 요소가 필요하거나 서비스로 제공하는 프로젝트 (Machine Learning as a Service)를 제공하는 프로젝트에 머신 러닝 모델을 빠르게 개발하기 위해 미래에 재사용 할 프레임 워크를 구축하는 것이 었습니다.

그리고 여기에 이제 몇 줄의 코드가 있으며 프로젝트를 오픈 소싱합니다. 왜? 솔직한 대답은이 시점에서“새로운 스타트 업을 구축하자”여정을 밟을 계획이 아니라는 것입니다. 동시에 나중에 필요할 때를 대비하여 하드 디스크에 코드를 유지하는 것이 의미가 없다고 생각했습니다. 따라서 논리적으로해야 할 일은 오픈 소스였습니다. 🙂

선적 서류 비치?

앞의 두 단락을 읽으 셨다면 아마 이것이 다가오는 것을 보셨을 것입니다. 다른 사람들과 공유 할 것을 염두에두고 프레임 워크가 개발되지 않았기 때문에 문서가 부족하거나 존재하지 않습니다. 대부분의 클래스와 공용 메서드는 제대로 주석 처리되지 않았으며 코드 아키텍처를 설명하는 문서도 없습니다. 다행히 모든 클래스 이름은 자명하며 프레임 워크는 모든 공용 메소드 및 알고리즘에 대한 JUnit 테스트를 제공하며 코드 사용 방법의 예제로 사용할 수 있습니다. 커뮤니티의 도움으로 적절한 문서를 작성할 수 있기를 바라며 여러분을 믿습니다!

현재 제한 및 향후 개발

모든 소프트웨어 (특히 알파 버전의 오픈 소스 프로젝트)와 마찬가지로 Datumbox Machine Learning Framework에는 고유하고 사랑스러운 한계가 있습니다. 그들을 파헤 치자.

  1. 선적 서류 비치: 앞에서 언급했듯이 설명서가 열악합니다.
  2. 멀티 스레딩 없음 : 불행히도 프레임 워크는 현재 멀티 스레딩을 지원하지 않습니다. 물론 모든 머신 러닝 알고리즘을 병렬 처리 할 수있는 것은 아닙니다.
  3. 코드 예 : 프레임 워크가 방금 공개되었으므로 JUnit 테스트 형식으로 프레임 워크에서 제공 한 코드 이외의 코드 예제를 웹에서 찾을 수 없습니다.
  4. 코드 구조 : 큰 프로젝트를위한 견고한 아키텍처를 만드는 것은 항상 어려운 과제입니다. 감독 학습, 비지도 학습, 차원 축소 알고리즘 등 크게 다른 머신 러닝 알고리즘을 다루어야 할 때 말입니다.
  5. 모델 지속성 및 대규모 데이터 수집 : 현재 모델은 디스크 또는 MongoDB 데이터베이스의 파일에서 학습하고 저장할 수 있습니다. 많은 양의 데이터를 처리 할 수 ​​있으려면 다른 솔루션을 조사해야합니다. 예를 들어 맵DB 훈련하는 동안 데이터와 매개 변수를 저장하기에 좋은 후보 인 것 같습니다. 또한 3을 제거하는 것이 중요합니다rd 현재 모델의 지속성을 처리하고 더 나은 건식 모듈 식 솔루션을 개발하는 타사 라이브러리.
  6. 새로운 알고리즘 /테스트 / 모델: 현재 지원되지 않는 훌륭한 기술이 많이 있습니다 (특히 시계열 분석).

불행히도 위의 모든 것은 너무 많은 작업이며 시간이 너무 적습니다. 그렇기 때문에 프로젝트에 관심이 있으시면 앞으로 나아갈 수 있도록 위의 사항을 알려주십시오. 또한 오픈 소싱 중대형 프로젝트에 경험이 있고이를 관리하는 방법에 대한 팁을 제공 할 수있는 사람들의 의견을 듣고 싶습니다. 또한 코드를 조사하고 일부 클래스 또는 공개 메서드를 문서화하려는 용감한 영혼에게 감사합니다. 마지막으로 흥미로운 프레임 워크를 사용한다면 한 줄을 남겨 주시거나 블로그 포스트와 공유 해주세요.

마지막으로이 프로젝트, 나의 친구이자 슈퍼 닌자-자바 개발자 인이 프로젝트를 작성하는 동안 관용 해 주신 Kyriaki에게 감사의 말씀을 전합니다. 엘레 프테 리오스 밤 팔레 타 키스 중요한 Java 문제를 해결하고 프로젝트에 참여해 주셔서 감사합니다. 귀하의 의견을 기다리고 있습니다.

타임 스탬프 :

더보기 데이텀 박스