
データストリーム上でのインクリメンタル学習のためのストリーミング機械学習ライブラリ。Python向けにオンライン推定器、ドリフトおよび異常検知、パイプライン、メトリクス、組み込みデータセットを提供します。
River は、オンライン機械学習のための Python ライブラリです。ストリーミングデータに対する機械学習を、最もユーザーフレンドリーに行えるライブラリを目指しています。River は、creme と scikit-multiflow の合併により生まれました。
簡単な例として、ロジスティック回帰を訓練してウェブサイトフィッシングデータセットを分類してみましょう。以下はデータセットの最初の観測値です。
>>> from pprint import pprint
>>> from river import datasets
>>> dataset = datasets.Phishing()
>>> for x, y in dataset:
... pprint(x)
... print(y)
... break
{'age_of_domain': 1,
'anchor_from_other_domain': 0.0,
'empty_server_form_handler': 0.0,
'https': 0.0,
'ip_in_url': 1,
'is_popular': 0.5,
'long_url': 1.0,
'popup_window': 0.0,
'request_from_other_domain': 0.0}
True
では、モデルをストリーミング方式でデータセットに対して実行してみましょう。予測とモデルの更新を順番に交互に行います。その間に、パフォーマンスメトリクスを更新して、モデルの出来栄えを確認します。
>>> from river import compose
>>> from river import linear_model
>>> from river import metrics
>>> from river import preprocessing
>>> model = compose.Pipeline(
... preprocessing.StandardScaler(),
... linear_model.LogisticRegression()
... )
>>> metric = metrics.Accuracy()
>>> for x, y in dataset:
... y_pred = model.predict_one(x) # make a prediction
... metric.update(y, y_pred) # update the metric
... model.learn_one(x, y) # make the model learn
>>> metric
Accuracy: 89.28%
もちろん、これは単なる人為的な例です。より詳しいチュートリアルについては、ドキュメントのはじめにのセクションをぜひご覧ください。
River は Python 3.11 以降 での動作を想定しています。インストールは pip で行えます:
pip install river
Linux、MacOS、Windows 向けのホイールが用意されています。つまり、ほとんどの場合、River をソースからビルドする必要はないでしょう。
River のコアとなるオンラインインターフェース(learn_one / predict_one)には pandas の依存関係はありません。ミニバッチインターフェース(learn_many、predict_many、predict_proba_many、transform_many)は pandas 上に構築されており、オプトイン方式です:
pip install "river[pandas]"
最新の開発版は GitHub から次のようにインストールできます:
pip install git+https://github.com/online-ml/river --upgrade
pip install git+ssh://[email protected]/online-ml/river.git --upgrade # using SSH
この方法では、お使いのマシンに Cython と Rust がインストールされている必要があります。
River は、次のアルゴリズムファミリーのオンライン実装を提供します:
River は、その他のオンラインユーティリティも提供します:
包括的な概要については、API をご確認ください。
自分がオンライン機械学習を必要としているかどうかを自問してみてください。答えはおそらく「いいえ」です。ほとんどの場合、バッチ学習で十分に役割を果たします。オンラインアプローチが適しているのは、次のような場合です:
River の特徴としては、次のようなものがあります:
どのような形でもお気軽にご貢献ください。新しいアイデアやアプローチを常に歓迎しています。
コードベースに変更を加えたい場合は、コントリビューションガイドラインをご確認ください。
River がお役に立ち、学術出版物で引用したい場合は、JMLR に掲載された論文を参照してください:
@article{montiel2021river,
title={River: machine learning for streaming data in Python},
author={Montiel, Jacob and Halford, Max and Mastelini, Saulo Martiello
and Bolmier, Geoffrey and Sourty, Raphael and Vaysse, Robin and Zouitine, Adil
and Gomes, Heitor Murilo and Read, Jesse and Abdessalem, Talel and others},
year={2021}
}
River は、3条項BSDライセンスの下で提供されるフリーかつオープンソースのソフトウェアです。