Java PlatoBlockchain Data Intelligence で書かれた新しいオープンソース機械学習フレームワーク。垂直検索。あい。

Javaで記述された新しいオープンソースの機械学習フレームワーク

Datumbox Machine Learning FrameworkがGPL 3.0でオープンソース化され、そのコードを以下からダウンロードできることをお知らせいたします。 githubの!

このフレームワークとは何ですか?

  Datumbox機械学習フレームワーク はJavaで記述されたオープンソースのフレームワークであり、機械学習モデルと統計アプリケーションの迅速な開発を可能にします。 これは、現在DatumboxAPIを起動するコードです。 フレームワークの主な焦点は、多数の機械学習アルゴリズムと統計手法を組み込み、中小規模のデータセットを処理できるようにすることです。 フレームワークはさまざまな分野のモデルの開発を支援することを目的としていますが、自然言語処理およびテキスト分析アプリケーションで特に役立つツールも提供します。

どのタイプのモデル/アルゴリズムがサポートされていますか?

フレームワークは、機械学習、統計、数学、アルゴリズム、ユーティリティなどのいくつかのレイヤーに分かれています。 それぞれが、機械学習モデルのトレーニングに使用される一連のクラスを提供します。 最も重要なXNUMXつの層は、統計層と機械学習層です。

統計レイヤーは、記述統計の計算、さまざまなタイプのサンプリングの実行、一般的に使用される確率分布からのCDFとPDFの推定、および35を超えるパラメトリックおよびノンパラメトリックテストの実行のためのクラスを提供します。 このようなタイプのクラスは通常、説明的なデータ分析、サンプリング、特徴選択を実行するときに必要です。

機械学習レイヤーは、分類、回帰、クラスター分析、トピックモデリング、次元削減、特徴選択、アンサンブル学習、推奨システムなど、多数の問題で使用できるクラスを提供します。 LDA、Max Entropy、Naive Bayes、SVM、Bootstrap Aggregating、Adaboost、Kmeans、Hierarchical Clustering、Dirichlet Process Mixture Models、Softmax Regression、Ordininal Regression、Linear Regression、Stepwise Regression、PCAなど。

DatumboxフレームワークVS Mahout VS Scikit-Learn

MahoutとScikit-Learnはどちらも素晴らしいプロジェクトであり、どちらも完全に異なるターゲットを持っています。 Mahoutは、並列化できる非常に限られた数のアルゴリズムのみをサポートしているため、HadoopのMap-Reduceフレームワークを使用してビッグデータを処理します。 一方、Scikit-Learnは多数のアルゴリズムをサポートしていますが、大量のデータを処理できません。 さらに、Pythonで開発されています。Pythonは、プロトタイピングやサイエンティフィックコンピューティングに最適な言語ですが、ソフトウェア開発には個人的には適していません。

Datumboxフレームワークは、XNUMXつのソリューションの中間に位置しています。 それは多数のアルゴリズムをサポートしようとし、それはJavaで書かれています。 これは、製品コードへの組み込みが容易であり、微調整してメモリ消費を削減し、リアルタイムシステムで使用できることを意味します。 最後に、現在Datumbox Frameworkは中規模のデータセットを処理できますが、大規模なデータセットを処理するように拡張することは私の計画の範囲内です。

どれくらい安定していますか?

フレームワークの初期バージョン(0.3.xまで)は2013年の2014月と0.4月に開発され、PHP(そうです!)で書かれました。 0.5.0年XNUMX月とXNUMX月の間(バージョンXNUMX.x)、フレームワークはJavaで書き直され、追加機能で強化されました。 両方のブランチは、Datumbox APIを含む商用アプリケーションで厳しくテストされました。 現在のバージョンはXNUMXで、フレームワークの最初のパブリックアルファバージョンとしてリリースされるには十分成熟しているようです。 とはいえ、フレームワークの一部の機能は他の機能よりも徹底的にテストされていることに注意することが重要です。 さらに、このバージョンはアルファ版であるため、将来のリリースで大幅な変更が行われることを期待する必要があります。

なぜそれを書いたのか、なぜそれをオープンソースなのか?

私が機械学習とNLPに関与したのは、2009年にWebSEOAnalytics.comを共同設立したときからです。 それ以来、さまざまなプロジェクトやアプリケーション向けのさまざまな機械学習アルゴリズムの実装を開発してきました。 残念ながら、元の実装のほとんどは非常に特定の問題であり、他の問題ではほとんど使用できませんでした。 2013年XNUMX月、私はDatumboxを個人プロジェクトとして開始し、NLPおよびテキスト分類の領域に焦点を当てた機械学習モデルを開発するためのツールを提供するフレームワークを開発することを決定しました。 私の目標は、将来機械学習モデルを迅速に開発するために再利用できるフレームワークを構築し、機械学習コンポーネントを必要とするプロジェクトに組み込んだり、サービス(Machine Learning as a Service)として提供したりすることでした。

そして、私は今、数行後のコードで、プロジェクトをオープンソース化しています。 どうして? 正直なところ、現時点では、「新しいスタートアップを構築する」旅に出るというのは私の計画の範囲外です。 同時に、将来必要になった場合に備えてハードディスクにコードを保持することは意味がないと感じました。 したがって、論理的なことは、それをオープンソース化することだけでした。 🙂

ドキュメンテーション?

前のXNUMXつの段落を読んだら、おそらくこれが来るのを見るはずです。 フレームワークは私が他の人と共有することを念頭に置いて開発されていないため、ドキュメントは貧弱/存在しません。 ほとんどのクラスとパブリックメソッドは適切にコメント化されておらず、コードのアーキテクチャを説明するドキュメントはありません。 幸い、すべてのクラス名は自明であり、フレームワークはすべてのパブリックメソッドとアルゴリズムに対してJUnitテストを提供し、これらはコードの使用方法の例として使用できます。 コミュニティの助けを借りて、適切なドキュメントを作成することを願っていますので、私はあなたを頼りにしています!

現在の制限と将来の開発

すべてのソフトウェア(特にアルファバージョンのオープンソースプロジェクト)と同様に、Datumbox機械学習フレームワークには、独自の魅力的な制限があります。 それらを掘り下げましょう:

  1. ドキュメント: 前述のように、ドキュメントは不十分です。
  2. マルチスレッドなし: 残念ながら、フレームワークは現在マルチスレッドをサポートしていません。 もちろん、すべての機械学習アルゴリズムを並列化できるわけではないことに注意してください。
  3. コード例: フレームワークが公開されたばかりなので、フレームワークによってJUnitテストの形式で提供されているもの以外、Webでコード例を見つけることはできません。
  4. コード構造: 大規模なプロジェクトに強固なアーキテクチャを作成することは常に困難であり、大きく異なる機械学習アルゴリズム(教師あり学習、教師なし学習、次元削減アルゴリズムなど)を扱う必要がある場合はもちろんです。
  5. モデルの永続性と大規模なデータコレクション: 現在、モデルをトレーニングして、ディスク上のファイルまたはMongoDBデータベースに保存できます。 大量のデータを処理できるようにするには、他のソリューションを調査する必要があります。 例えば マップDB トレーニング中にデータとパラメータを保存するのに適した候補のようです。 さらに、任意の3を削除することが重要ですrd 現在モデルの永続性を処理し、より乾燥したモジュール式ソリューションを開発するパーティーライブラリ。
  6. 新しいアルゴリズム/テスト/モデル: 現在サポートされていない素晴らしいテクニックがたくさんあります(特に時系列分析の場合)。

残念ながら、上記のすべては手間がかかりすぎて、時間がほとんどありません。 そのため、プロジェクトに興味がある場合は、前に進んで上記のいずれかを手に入れてください。 さらに、オープンソースの中規模プロジェクトの経験があり、それらを管理するためのヒントを提供できる人からの意見をお待ちしています。 さらに、コードを調べて、いくつかのクラスやパブリックメソッドを文書化する勇気のある人に感謝します。 最後になりましたが、何か面白いことにフレームワークを使用している場合は、私に連絡するか、ブログ投稿と共有してください。

最後に、このプロジェクトの執筆中に私を容認してくれた私の愛、Kyriakiに感謝します。私の友人であり、超忍者Java開発者です。 エレフテリオス・バンパレタキス 重要なJavaの問題を手伝ってくれて、プロジェクトに参加してくれた。 コメントお待ちしております。

タイムスタンプ:

より多くの データムボックス