Awesome Machine Learning with Ruby
Machine Learning with Rubyを扱う資料や関連プロジェクトをまとめたAwesomeリストです。
目次
- :sparkles: チュートリアル
- 機械学習ライブラリ
- 機械学習の応用
- データ構造
- データ可視化
- 記事、投稿、講演、プレゼンテーション
- プロジェクトとコード例
- Heroku buildpack
- 書籍、ブログ、チャンネル
- コミュニティ
- 関連リソース
- ライセンス
:sparkles: チュートリアル
このセクションの充実にご協力ください! :smiley:
- Rubyのニューラルネットワーク
- Rubyで線形回帰を実装する方法 [コード]
- Rubyでロジスティック回帰による分類を実装する方法
- Rubyのニューラルネットワークで単純な二値分類を実装する方法 [コード]
- RubyでSVMによる分類を実装する方法 [コード]
- Rubyでk-meansクラスタリングを使った教師なし学習 [コード]
- RubyのQ-Learningで単純なゲームをAIにプレイさせる [コード]
- RubyのQ-Learningでニューラルネットワークにゲームをプレイさせる [コード]
- PyCallを使ってPythonのscikit-learn機械学習ライブラリをRubyで利用する [コード]
- Machine Learning Workbenchを使ってRubyでニューラルネットワークを_進化_させる方法
機械学習ライブラリ
純粋な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 GymへPyCallを介して応用します。
- 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実装。
深層学習
- tensor_stream - Ruby向けにゼロから構築された独立型TensorFlow再実装。
- red-chainer - Ruby向け深層学習フレームワーク。
- tensorflow - TensorFlowのRubyバインディング。
- ruby-dnn - Ruby向けの簡潔な深層学習。
- torch-rb - LibTorchのRubyバインディング。 riceを使用します。
- mxnet - mxnetのRubyバインディング。
カーネル法
- rb-libsvm - RubyとLIBSVMライブラリによるサポートベクターマシン。 [依存: bundled]
進化的アルゴリズム
- 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実装。
決定木
- decisiontree - 純粋なRubyによる決定木ID3アルゴリズム。 [依存: GraphViz | 投稿]。
クラスタリング
- 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]
勾配ブースティング
- xgboost — XGBoostのRubyバインディング。 [依存: XGBoost]
- xgb — XGBoostのRubyバインディング。 [依存: XGBoost]
- lightgbm — LightGBMのRubyバインディング。 [依存: LightGBM]
ベクトル検索
- 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リストのデータ可視化セクションを参照してください。
記事、投稿、講演、プレゼンテーション
-
2022
- Rubyで機械学習を知る、Justin Bowen [動画]
-
2019
- TensorStream: Rubyに機械学習をもたらす、Joseph Emmanuel Dayo [投稿]
- SVMKitを使ったRubyでの簡単な機械学習、@kojix [投稿]
-
2018
- Rubyでの深層学習プログラミング、Kenta Murata & Yusaku Hatanaka [スライド | ページ]
- 訓練済みKeras・TensorFlow機械学習モデルをRuby on Rails内で使用する方法、Denis Sellu [投稿]
-
2017
- JRubyでの科学計算、Prasun Anand [スライド | 動画 | スライド | スライド]
- これは食べ物? 機械学習入門、Matthew Mongeau [動画 | スライド]
- Bayes is BAE、Richard Schneeman [動画 | スライド]
- Ruby Roundtable: Rubyでの機械学習、RubyThursday [動画]
-
2016
- Rubyによる実践的な機械学習、Jordan Hudgens [チュートリアル]
- 深層学習: Ruby開発者向け入門、Geoffrey Litt [スライド]
- 純粋なRuby製word2vecプログラムを3倍以上高速化した方法、Kei Sawada [スライド]
- Dōmo arigatō, Mr. Roboto: Rubyによる機械学習、Eric Weinstein [スライド | 動画]
- 機械学習技法で推薦エンジンを構築する、Brian Sam-Bodden [動画]
- :sparkles: SciRuby Machine Learning: 現状と将来、Kenta Murata [スライド | 動画: jp]
- Ruby Roundtable: TensorFlow入門、RubyThursday [動画]
-
2015
- Rubyで機械学習を簡単に、Lorenzo Masini [投稿]
- Ruby機械学習でParis Hiltonの発言を見つける、Rick Carlino [チュートリアル]
-
2014
- テスト駆動ニューラルネットワーク、Matthew Kirk [動画]
- Rubyアプリですぐ使える5つの機械学習技法、Benjamin Curtis [動画 | スライド]
- 楽しみと利益のための機械学習、John Paul Ashenfelter [動画]
-
2013
- Rubyのサポートベクターマシンによる感情分析、Matthew Kirk [動画 | コード]
- Rubyによる推薦システム、Marcel Caraciolo [スライド]
- Rubyで顔を検出する: FFI概説、Marc Berszick [投稿]
-
2012
- Rubyによる機械学習、第1部、Vasily Vasinov [チュートリアル]
- Rubyの再帰型ニューラルネットワーク、Joseph Wilk [投稿]
- 機械学習とJRubyを使う推薦エンジン、Matthew Kirk [動画]
- 実践的な機械学習とRails、Andrew Cantino and Ryan Stout [動画]
-
2011
- Rubyでのクラスタリング、Colin Drake [投稿]
- Rubyのサポートベクターマシンによるテキスト分類、Rimas Silkaitis [投稿]
-
2010
- bayes_motel – Ruby向けベイズ分類、Mike Perham [投稿]
- Intelligent Ruby: 機械学習を始める、Ilya Grigorik [動画]
-
2009
-
2008
- Rubyのサポートベクターマシン(SVM)、Ilya Grigorik [投稿]
-
2007
- Rubyの決定木学習、Ilya Grigorik [投稿]
プロジェクトとコード例
- Wine Clustering - ワインの品質推定を異なるアルゴリズムでクラスタリングします。
- simple_ga - Rubyによる遺伝的アルゴリズムの基本的な動作デモ。
- Handwritten Digits Recognition - ニューラルネットワークとRubyによる手書き数字認識。
Heroku buildpack
書籍、ブログ、チャンネル
- Kirk, Matthew。 Thoughtful Machine Learning: A Test-Driven Approach。O’Reilly、2014年。 [Amazon | コード]
- Practical Artificial Intelligence - Rubyによるチュートリアルとコード例を掲載する人工知能・機械学習ブログ。
コミュニティ
- SciRuby Mailing List
- SciRuby Slack
- Red Data Gitter
- Stack Overflow
- NonWebRuby
- Ruby AI Builders Discord
- X Ruby AI group
- Mastodon Ruby AI and Data group
関連リソース
- LightGBM
- XGBoost
- [GSL (GNU Scientific Library)][gls]
- OpenCV
- Graphviz
- Gnuplot
- X11/XQuartz
- ImageMagick
- R
- Octave
- scikit-learnアルゴリズム早見表
- Awesome Ruby - 他の優れた項目とともに、NLP関連プロジェクトの短いリストを掲載しています。
- Ruby NLP - Ruby向けNLPライブラリの最先端コレクション。
- Speech and Natural Language Processing - NLP関連リソースの一般的なリスト(主にRubyプログラマー以外向け)。
- Scientific Ruby - Ruby向けの線形代数、可視化、科学計算。
- iRuby - Jupyter(旧IPython)向けIRubyカーネル。
- Kiba - 軽量なETL(Extract、Transform、Load)パイプライン。
- Awesome OCR - 多数のOCR(Optical Character Recognition)リソース。
- Awesome TensorFlow - TensorFlowライブラリによる機械学習。
- rb-gsl - GNU Scientific LibraryのRubyインターフェース。
- The Definitive Guide to Ruby’s C API - Cプログラミング言語を使ったRubyの埋め込みと拡張に関する最新のリファレンスとチュートリアル。
ライセンス
Awesome ML with Ruby、Andrei Beliankouおよび貢献者による。
法律で可能な範囲において、Awesome ML with RubyへCC0を関連付けた人物は、Awesome ML with Rubyに関するすべての著作権および関連する権利、隣接権を放棄しています。
この作品にはCC0の法律条文の写しが添付されているはずです。添付されていない場合はhttps://creativecommons.org/publicdomain/zero/1.0/を参照してください。