このページの内容

Awesome Machine Learning with Ruby

Machine Learning with Rubyを扱う資料や関連プロジェクトをまとめたAwesomeリストです。

目次

:sparkles: チュートリアル

このセクションの充実にご協力ください! :smiley:

機械学習ライブラリ

純粋なRubyで実装された機械学習アルゴリズム、またはRuby向けの適切なバインディングを備えた他のプログラミング言語製アルゴリズム。

フレームワーク

  • LangChain.rb - Ruby版LangChainでML/AIを活用したアプリケーションを構築します。
  • weka - WekaのJRubyバインディング。Wekaを介して実装されたさまざまなMLアルゴリズムを利用できます。
  • ai4r - Ruby向け人工知能。
  • classifier-reborn - ベイズ分類などの分類方式を利用できる汎用分類器モジュール。 [依存: GLS]
  • scoruby - PMML(Predictive Model Markup Language)向けRubyスコアリングAPI。
  • rblearn - 特徴抽出・交差検証ライブラリ。
  • data_modeler - 機械学習でデータをモデル化します。充実したテストカバレッジ、すぐに始められる例、完全なドキュメントを備え、1.0.0以降は本番利用可能です。
  • shogun - 多機能で成熟した 機械学習ツールボックス。Rubyバインディングを備えます。
  • aws-sdk-machinelearning - Amazon Web ServicesのMachine Learning API。
  • azure_mgmt_machine_learning - Microsoft AzureのMachine Learning API。
  • machine_learning_workbench - 純粋なRubyで書かれた成長中の機械学習フレームワーク。Numoによる高性能計算とCumoによるCUDAバインディングを利用します。現在はニューラルネットワーク、進化戦略、ベクトル量子化を実装中で、多数の例とユーティリティを提供します。
  • Deep NeuroEvolution - 進化的アルゴリズムを使い、深層ニューラルネットワークを訓練するのではなく探索するためのmachine_learning_workbenchベースの実験環境。OpenAI GymPyCallを介して応用します。
  • rumale - 幅広いアルゴリズム(SVM、ロジスティック回帰、線形回帰、ランダムフォレストなど)を実装し、PythonのScikit-Learnに似たインターフェースを備えるRuby製機械学習ツールキット。
  • eps - ベイズ分類・線形回帰。エクスポートには PMMLを、代替バックエンドにはGSLを使用します。
  • ruby-openai - OpenAI APIラッパー。
  • Instruct - Guidanceに着想を得たツール。コード、プロンプト、補完を組み合わせ、LLMへ目的の処理を指示します。

ニューラルネットワーク

  • neural-net-ruby - Rubyで書かれたニューラルネットワーク。
  • ruby-fann - Fast Artificial Neural Network Library (FANN)のRubyバインディング。
  • cerebrum - Rubyによる人工ニューラルネットワークの実験的実装。
  • tlearn-rb - Ruby向け再帰型ニューラルネットワークライブラリ。
  • brains - brainsを基にしたJRuby向けフィードフォワードニューラルネットワーク。
  • machine_learning_workbench - フィードフォワード型と再帰型(全結合)の両ニューラルネットワークを純粋なRubyで実装したフレームワーク。神経進化(Natural Evolution Strategiesアルゴリズム)による訓練が可能です。
  • rann - 逆伝播(再帰ネットワーク向けの通時的逆伝播を含む)、勾配チェック、AdaGrad、並列バッチ実行を備えた柔軟なRuby ANN実装。

深層学習

カーネル法

進化的アルゴリズム

  • machine_learning_workbench - Natural Evolution Strategyアルゴリズム(ブラックボックス最適化)、具体的にはExponential NES(XNES)、Separable NES(sNES)、Block-Diagonal NES(BDNES)などの純粋なRuby実装を含むフレームワーク。ニューラルネットワークの探索・訓練(神経進化)などへ応用できます。
  • simple_ga - Rubyによる最も簡潔な遺伝的アルゴリズム実装。

ベイズ法

  • linnaeus - Redisをバックエンドに使うベイズ分類器。
  • naive_bayes - 簡潔なNaive Bayes分類器。
  • nbayes - 高機能なRuby製Naive Bayes実装。

決定木

クラスタリング

  • kmeans-clusterer - Rubyによるk-meansクラスタリング。
  • k_means - 高速でメモリー効率のよいK-Meansプログラムの構築を試みます。
  • knn - 簡潔なK近傍法アルゴリズム。

線形分類器

  • liblinear-ruby-swig - LIBLINEARのRubyインターフェース(テキスト分類ではLIBSVMよりはるかに効率的)。
  • liblinear-ruby - SWIGを使うLIBLINEARのRubyインターフェース。

統計モデル

  • rtimbl - Timblフレームワークのメモリーベース学習器。
  • lda-ruby - トピックの自動モデリングと文書クラスタリングに使うLDA(Latent Dirichlet Allocation)のRuby実装。
  • maxent_string_classifier - OpenNLP Maxentフレームワークを基にした文字列データ向けJRuby最大エントロピー分類器。
  • omnicat - テキスト分類向けの汎用Rackフレームワーク。
  • omnicat-bayes - OmniCat分類器戦略としてのNaive Bayesテキスト分類実装。 [依存: bundled]

勾配ブースティング

ベクトル検索

  • flann - FLANN(Fast Library for Approximate Nearest Neighbors)のRubyバインディング。 [flann]
  • annoy-rb - Annoy(Approximate Nearest Neighbors Oh Yeah)のRubyバインディング。
  • hnswlib.rb - Hierarchical Navigable Small Worldグラフによる近似最近傍探索を実装するHnswlibのRubyバインディング。
  • ngt-ruby - NGT(Neighborhood Graph and Tree for Indexing High-dimensional data)のRubyバインディング。
  • milvus — Milvus Vector DBのRubyクライアント。
  • pinecone — Pinecone Vector DBのRubyクライアント。
  • qdrant-ruby — Qdrantベクトル検索データベースAPIのRubyラッパー。
  • weaviate-ruby — Weaviateベクトル検索データベースAPIのRubyラッパー。

機械学習の応用

  • phashion - 重複するマルチメディアファイルの検出に使う知覚ハッシュライブラリpHashのRubyラッパー。 [ImageMagick | libjpeg]

データ構造

独自のMLアルゴリズムを実装するなら、特徴量セットを効率よく保存する方法に関心があるでしょう。Data Science with Rubyリストで、適切なデータ構造を探してください。

データ可視化

Data Science with Rubyリストのデータ可視化セクションを参照してください。

記事、投稿、講演、プレゼンテーション

プロジェクトとコード例

  • Wine Clustering - ワインの品質推定を異なるアルゴリズムでクラスタリングします。
  • simple_ga - Rubyによる遺伝的アルゴリズムの基本的な動作デモ。
  • Handwritten Digits Recognition - ニューラルネットワークとRubyによる手書き数字認識。

Heroku buildpack

書籍、ブログ、チャンネル

コミュニティ

関連リソース

ライセンス

Creative Commons Zero 1.0 Awesome ML with RubyAndrei Beliankouおよび貢献者による。

法律で可能な範囲において、Awesome ML with RubyへCC0を関連付けた人物は、Awesome ML with Rubyに関するすべての著作権および関連する権利、隣接権を放棄しています。

この作品にはCC0の法律条文の写しが添付されているはずです。添付されていない場合はhttps://creativecommons.org/publicdomain/zero/1.0/を参照してください。