
データストリーム上でのインクリメンタル学習のためのストリーミング機械学習ライブラリ。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ライセンスの下でライセンスされた、フリーでオープンソースのソフトウェアです。