Tribuo は、マルチクラス分類、回帰、クラスタリング、異常検出、およびマルチラベル分類を提供する Java の機械学習ライブラリです。 Tribuo は、一般的な ML アルゴリズムの実装を提供し、また他のライブラリをラップして統一インターフェイスを提供します。 Tribuo には、データのロード、特徴付け、変換に必要なコードがすべて含まれています。さらに、サポートされているすべての予測タイプの評価クラスが含まれています。開発はOracle Labsの機械学習研究グループが主導しています。コミュニティへの貢献を歓迎します。
すべてのトレーナーは、OLCUT 構成システムを使用して構成できます。これにより、ユーザーは xml または json ファイルでトレーナーを定義し、モデルを繰り返し構築できるようになります。提供されている各トレーナーの設定例は、各パッケージの config フォルダーにあります。これらの構成ファイルは、適切な OLCUT 構成の依存関係を使用して、json または edn で記述することもできます。モデルとデータセットは、Java シリアル化を使用してシリアル化できます。
すべてのモデルと評価には、モデルまたは評価の作成時間、データの ID とそれに適用された変換、トレーナーのハイパーパラメーターを記録するシリアル化可能な来歴オブジェクトが含まれています。評価の場合、この出所情報には、使用された特定のモデルも含まれます。出所情報は JSON として抽出することも、Java シリアル化を使用して直接シリアル化することもできます。運用環境の場合、出所情報を編集してハッシュに置き換えることで、外部システムを介してモデルを追跡できます。多くの Tribuo モデルは、他の言語、プラットフォーム、またはクラウド サービスで展開するために ONNX 形式でエクスポートできます。
Tribuo は Java 8 以降で実行され、最新リリースと合わせて Java の LTS バージョンでテストします。 Tribuo 自体は純粋な Java ライブラリであり、すべての Java プラットフォームでサポートされています。ただし、一部のインターフェイスはネイティブ コードを必要とするため、ネイティブ ライブラリがサポートされている場合にのみサポートされます。 Windows 10、macOS、および Linux (RHEL/OL/CentOS 7+) 上の x86_64 アーキテクチャでテストします。これらは、インターフェイスで使用するネイティブ ライブラリがサポートされているプラットフォームであるためです。別のプラットフォームに興味があり、ネイティブ ライブラリ インターフェイス (ONNX Runtime、TensorFlow、XGBoost) のいずれかを使用したい場合は、それらのライブラリの開発者に連絡することをお勧めします。モデル カードと再現性パッケージには Java 17 が必要であるため、 tribuo-all
Maven Central デプロイメントの一部ではないことに注意してください。
分類、クラスタリング、回帰、異常検出、TensorFlow、ドキュメント分類、列指向データの読み込み、外部でトレーニングされたモデルの操作、構成システムの例を含むチュートリアル ノートブックは、チュートリアルにあります。これらは IJava Jupyter ノートブック カーネルを使用し、Java 17 を必要とするモデル カードと再現性チュートリアルを除き、Java 10 以降で動作します。チュートリアルのコードを Java 8 に変換するには、ほとんどの場合、 var
キーワードを適切な型に置き換えるだけです。 。
Tribuo には、幅広い予測タスクに適したいくつかのアルゴリズムの実装が含まれています。
アルゴリズム | 実装 | 注意事項 |
---|---|---|
袋詰め | トリブオ | 任意の Tribuo トレーナーを基本学習者として使用できます |
ランダムフォレスト | トリブオ | 分類と回帰の両方について |
追加の木 | トリブオ | 分類と回帰の両方について |
K-NN | トリブオ | 単一スレッドのバックエンドだけでなく、複数の並列バックエンドのオプションが含まれています |
ニューラルネットワーク | TensorFlow | Tribuo ラッパーを介して TensorFlow でニューラル ネットワークをトレーニングします。モデルは、ONNX インターフェイスまたは TF インターフェイスを使用して展開できます。 |
アンサンブルと K-NN は組み合わせ関数を使用して出力を生成します。これらの結合器は予測タスクに固有ですが、アンサンブルと K-NN の実装はタスクに依存しません。マルチクラス分類、マルチラベル分類、回帰タスク用の投票および平均コンバイナーを提供します。
Tribuo には次の実装またはインターフェイスがあります。
アルゴリズム | 実装 | 注意事項 |
---|---|---|
線形モデル | トリブオ | SGD を使用し、任意の勾配オプティマイザーを許可します |
因数分解マシン | トリブオ | SGD を使用し、任意の勾配オプティマイザーを許可します |
カート | トリブオ | |
SVM-SGD | トリブオ | Pegasos アルゴリズムの実装 |
アダブースト.SAMME | トリブオ | 任意の Tribuo 分類トレーナーを基本学習者として使用できます |
多項単純ベイズ | トリブオ | |
正則化線形モデル | リブリニア | |
SVM | LibSVM または LibLinear | LibLinear は線形 SVM のみをサポートします |
勾配ブーストされたデシジョン ツリー | XGブースト |
Tribuo は、配列分類タスク用の線形チェーン CRF も提供します。この CRF は、Tribuo の勾配オプティマイザーのいずれかを使用して SGD 経由でトレーニングされます。
Tribuo には、分類タスクに適用できる一連の情報理論的特徴選択アルゴリズムがあります。特徴入力は自動的に同じ幅のビンに離散化されます。現時点では、これには相互情報最大化 (MIM)、条件付き相互情報最大化 (CMIM)、最小冗長最大関連性 (mRMR)、および共同相互情報 (JMI) の実装が含まれます。
分類子の予測を説明するために、LIME アルゴリズムの実装があります。 Tribuo の実装では、テキストと表形式データの混合が可能であり、また、説明子としてのスパース モデル (回帰ツリー、なげなわなど) の使用も可能ですが、画像はサポートされていません。
Tribuo の回帰アルゴリズムはデフォルトで多次元です。単次元の実装は、多次元の出力を生成するためにラップされます。
アルゴリズム | 実装 | 注意事項 |
---|---|---|
線形モデル | トリブオ | SGD を使用し、任意の勾配オプティマイザーを許可します |
因数分解マシン | トリブオ | SGD を使用し、任意の勾配オプティマイザーを許可します |
カート | トリブオ | |
なげなわ | トリブオ | LARS アルゴリズムの使用 |
弾性ネット | トリブオ | 座標降下アルゴリズムの使用 |
正則化線形モデル | リブリニア | |
SVM | LibSVM または LibLinear | LibLinear は線形 SVM のみをサポートします |
勾配ブーストされたデシジョン ツリー | XGブースト |
Tribuo にはクラスタリング用のインフラストラクチャが含まれており、2 つのクラスタリング アルゴリズム実装も提供します。今後、追加のアルゴリズムが実装される予定です。
アルゴリズム | 実装 | 注意事項 |
---|---|---|
HDBSCAN* | トリブオ | クラスターと外れ値を検出する密度ベースのアルゴリズム |
K 平均法 | トリブオ | 逐次バックエンドと並列バックエンドの両方、および K-Means++ 初期化アルゴリズムが含まれています |
Tribuo は、異常検出タスクのためのインフラストラクチャを提供します。今後、新しい実装が追加される予定です。
アルゴリズム | 実装 | 注意事項 |
---|---|---|
1クラスのSVM | リブSVM | |
1クラス線形SVM | リブリニア |
Tribuo は、マルチラベル分類のためのインフラストラクチャと、Tribuo のマルチクラス分類アルゴリズムをマルチラベル分類アルゴリズムに変換するラッパーを提供します。今後、マルチラベル固有の実装がさらに追加される予定です。
アルゴリズム | 実装 | 注意事項 |
---|---|---|
独立したラッパー | トリブオ | ラベルごとに個別の分類器を生成することにより、マルチクラス分類アルゴリズムをマルチラベルアルゴリズムに変換します。 |
分類子チェーン | トリブオ | Tribuo のマルチクラス分類アルゴリズムのいずれかを使用して、分類子チェーンとランダム化された分類子チェーン アンサンブルを提供します |
線形モデル | トリブオ | SGD を使用し、任意の勾配オプティマイザーを許可します |
因数分解マシン | トリブオ | SGD を使用し、任意の勾配オプティマイザーを許可します |
Tribuo は、機械学習アルゴリズムの独自の実装に加えて、JVM 上の一般的な ML ツールへの共通インターフェイスも提供します。新しいインターフェースの提供に興味がある場合は、GitHub Issue を開いてください。それが Tribuo にどのように適合するかについて話し合うことができます。
現在、次のインターフェースがあります。
バイナリは、 groupId org.tribuo
を使用して Maven Central で入手できます。 TensorFlow、ONNX Runtime、および XGBoost (ネイティブ ライブラリ) のバインディングを含む、Tribuo のすべての Java 8 互換コンポーネントをプルするには、次のコマンドを使用します。
メイビン:
< dependency >
< groupId >org.tribuo</ groupId >
< artifactId >tribuo-all</ artifactId >
< version >4.3.1</ version >
< type >pom</ type >
</ dependency >
または Gradle から:
implementation ( " org.tribuo:tribuo-all:4.3.1@pom " ) {
transitive = true // for build.gradle (i.e., Groovy)
// isTransitive = true // for build.gradle.kts (i.e., Kotlin)
}
tribuo-all
依存関係は、Java 17 を必要とするモデル カードと再現性プロジェクトを除くすべての Tribuo サブプロジェクトに依存する pom です。
Tribuo の大部分は純粋な Java であるため、クロスプラットフォームですが、一部のインターフェイスはネイティブ コードを使用するライブラリにリンクしています。これらのインターフェイス (TensorFlow、ONNX Runtime、XGBoost) は、それぞれの公開バイナリがサポートされているプラットフォームでのみ実行され、Tribuo はどのバイナリが提供されるかを制御できません。特定のプラットフォームのサポートが必要な場合は、それらのプロジェクトのメンテナーにお問い合わせください。 4.1 リリースの時点では、これらのネイティブ パッケージはすべて、Windows、macOS、および Linux 用の x86_64 バイナリを提供します。 macOS ARM64 (つまり、Apple Silicon) 用に各パッケージをコンパイルすることもできますが、Maven Central には TensorFlow または XGBoost のそのプラットフォーム用に利用可能なバイナリがありません。 4.3 リリース以降、Tribuo は macOS ARM64 および Linux aarch64 プラットフォームのサポートを含む ONNX ランタイムのバージョンに依存するようになりました。 ARM プラットフォームで開発する場合、Tribuo のpom.xml
でarm
プロファイルを選択して、ネイティブ ライブラリ テストを無効にすることができます。
Tribuo モジュールごとに個別の jar が公開されます。特定のプロジェクトに必要なモジュールのみに依存することが望ましいです。これにより、コードが TensorFlow のような大規模な依存関係を不必要に取り込むのを防ぎます。
Tribuo は、Apache Maven v3.5 以降を使用してビルドします。 Tribuo は Java 8 以降と互換性があり、最新リリースとともに LTS バージョンの Java でテストしています。ビルドするには、 mvn clean package
実行するだけです。 Tribuo の依存関係はすべて Maven Central で利用できるはずです。問題が発生した場合は、ビルド関連の問題について問題を報告してください (ただし、Maven のプロキシ設定が不足していないかどうかを最初に確認してください。これはビルド失敗の一般的な原因であり、当社では制御できないためです)。 Java 16 以前を使用してビルドしている場合は、モデル カードと再現性パッケージが無効になることに注意してください。
開発はメイン ブランチで行われます。 main
ブランチには、次の Tribuo リリースのバージョン番号に「-SNAPSHOT」が付加されています。 Tribuo のメジャー リリースとマイナー リリースはmain
vA.BX-release-branch
でタグ付けされ、任意のポイント リリース (つまりvA.B.0
vA.B.1
、 vA.B.2
など) は、そのメジャー/マイナー リリースに続きます。これらのポイント リリースは、特定のリリース ブランチでタグ付けされます。たとえば、 v4.0.2
v4.0.X-release-branch
でタグ付けされます。
寄付を歓迎します!貢献ガイドラインをご覧ください。
ディスカッションメーリングリスト [email protected] があり、ここにアーカイブされています。リアルタイム チャットのさまざまなオプションを調査中です。今後も確認してください。バグレポート、機能リクエスト、その他の問題については、Github Issue を提出してください。
当社の責任あるセキュリティ脆弱性開示プロセスについては、セキュリティ ガイドを参照してください。
Tribuo は、Apache 2.0 ライセンスに基づいてライセンスされています。