このプロジェクトについて

Riverは、オンライン機械学習、すなわちデータストリームから一度に1つの観測を学習することに特化したオープンソースのPythonライブラリです。cremeとscikit-multiflowプロジェクトの統合の結果として提示されており、ストリーミングデータにおける機械学習のためのユーザーフレンドリーなライブラリとなることを目標として掲げています。 中核となるインターフェースは逐次的なものです。モデルはlearn_oneとpredict_oneを公開しているため、各サンプルが到着するたびに予測と更新を交互に行うことができ、過去のデータを再訪する必要はありません。クイックスタートの例では、StandardScalerとLogisticRegressionを組み合わせたパイプラインを用いて、組み込みのPhishingデータセットでロジスティック回帰を学習し、Accuracyメトリクスをモデルと並行して更新します。 インストールはpip(pip install river)で行い、Linux、macOS、Windows向けのホイールが公開されています。プロジェクトはPython 3.11以上を対象としています。中核となるオンラインインターフェースにはpandas依存がありません。ミニバッチインターフェース(learn_many、predict_many、predict_proba_many、transform_many)はpandas上に構築されており、river[pandas]エクストラを通じてオプトイン方式で利用できます。開発版はGitHubからインストールでき、CythonとRustが必要です。 対象となるアルゴリズム群には、さまざまなオプティマイザを備えた線形モデル、決定木とランダムフォレスト、近似最近傍、異常検知、ドリフト検知、推薦システム、時系列予測、バンディット、因子分解機、不均衡学習、クラスタリング、バギング/ブースティング/スタッキング、能動学習が含まれます。その他のオンラインユーティリティには、特徴抽出と選択、オンライン統計とメトリクス、前処理、組み込みデータセット、逐次モデル検証、モデルパイプラインがあります。 READMEでは、オンライン学習が適切となる状況を明示しています。モデルが過去を再訪せずに新しいデータから学習すべき場合、概念ドリフトへの堅牢性が重要な場合、あるいは開発がイベントベースの本番環境に似ているべき場合です。また、Riverは性能よりも明快さとユーザー体験を重視し、一度に1つのサンプルを処理するのが高速であり、Pythonエコシステムの他の部分と統合されることも述べています。 ドキュメントはriverml.xyzでホストされており、パッケージリリース、awesome-online-machine-learningリスト、2022年のGAIAプレゼンテーション、オンラインクラスタリングに関するKDD'22論文へのリンクがあります。プロジェクトはBSD 3-clauseライセンスで、公開ロードマップがあり、議論、issue、コントリビューションを歓迎しています。引用用のJMLR論文も利用可能です。