unit8co/darts
A python library for user-friendly forecasting and anomaly detection on time series.
Darts – Pythonによる時系列予測と異常検知
概要 – Dartsは、時系列データを簡単に扱うためのオープンソースのPythonライブラリです。古典的な統計手法(ARIMA、指数平滑法)から最新のディープラーニングアーキテクチャ(N-BEATS、TCN、Transformerベースのモデル)まで、幅広いモデルに対して統一されたscikit-learnスタイルのAPI(fit、predict)を提供します。また、異常検知、バックテスト、確率的予測、データ前処理のためのツールもバンドルされています。
重要性 – 時系列分析は、多くの業界(金融、エネルギー、小売、IoT)における中核的な問題です。Dartsは、異なるモデルファミリーやデータ形式間の切り替えの手間をなくし、モデルのプロトタイピング、比較、デプロイを迅速に行えるようにします。さらに、多系列トレーニング、共変量、階層的リコンシリエーション、コンフォーマル予測などの高度な機能もサポートしています。
クイックスタート(READMEより)
import pandas as pd
from darts import TimeSeries
from darts.models import ExponentialSmoothing
# CSVをpandas DataFrameに読み込む
df = pd.read_csv("AirPassengers.csv")
# Darts TimeSeriesに変換(時間列と値列を指定)
series = TimeSeries.from_dataframe(df, "Month", "#Passengers")
# トレーニング/バリデーション分割
train, val = series[:-36], series[-36:]
# 単純な指数平滑モデルを適合
model = ExponentialSmoothing()
model.fit(train)
# バリデーション期間の確率的予測(1000サンプル)
forecast = model.predict(len(val), num_samples=1000)
# 結果をプロット
import matplotlib.pyplot as plt
series.plot()
forecast.plot(label="forecast", low_quantile=0.05, high_quantile=0.95)
plt.legend()
plt.show()
主な機能(READMEに記載)
| カテゴリ | ハイライト |
|---|---|
| 予測モデル | 古典的(ARIMA、VARIMA、指数平滑法)、ベースライン(Naïve、移動平均)、ディープラーニング(N-BEATS、TCN、Transformer、RNN) |
| 多変量サポート | TimeSeries は複数の列を保持できます。多くのモデルが多変量入力をサポート |
| グローバルモデルのトレーニング | ニューラルネットワークモデルは、数十から数千の系列を同時にトレーニング可能 |
| 確率的出力 | サンプルベースの予測またはパラメトリック分布。信頼区間に有用 |
| 共変量 | 過去観測、未来既知、静的外部データをモデルに供給可能 |
| 異常検知 | darts.ad モジュールは、PyODスコアラー、K-means、分位数検出器、および任意の予測モデルをラップして異常スコアを生成 |
| バックテストと評価 | ローリングウィンドウ予測のためのユーティリティ、メトリクス一式(R²、MASEなど) |
| 説明可能性 | 互換性のあるモデル向けのSHAPベースの説明 |
| 階層的リコンシリエーション | 予測に階層的な一貫性を強制するトランスフォーマー |
| 統合 | PyTorch Lightningバックエンド、オプションのMLflowトラッキング、Dockerイメージ、Condaパッケージ、およびpandas、polars、numpy、pyarrow、xarrayとの互換性 |
| データユーティリティ | 組み込みデータセット、スケーリング、欠損値処理、差分、Box-Coxなど |
典型的なユースケース
- ビジネス需要予測 – 多くの製品レベル系列でグローバルモデルをトレーニングし、価格やプロモーションの共変量を組み込み、確率的な需要区間を取得。
- エネルギー負荷/価格予測 – 過去の気象データ(過去共変量)と既知のカレンダー効果(未来共変量)を使用して、電力消費量を予測。
- センサーストリームの異常検知 –
darts.adで予測モデルやPyOD検出器をラップして、分布外の動作をフラグ。 - 階層的プランニング – SKUレベルで予測し、カテゴリや総売上レベルに調整。
- 研究と教育 – 統一APIによる新しい時系列アーキテクチャの迅速なプロトタイピング。
インストール
# 推奨: 新しいPython 3.11以上の環境(conda/venv/virtualenv)
pip install darts # すべてのコア依存関係を取得
GPU/TPUサポートやスリムなインストールについては、リポジトリ内の完全な INSTALL.md を参照してください。
さらに学ぶには
- クイックスタートガイド – https://unit8co.github.io/darts/quickstart/00-quickstart.html
- ユーザーガイドとAPIリファレンス – https://unit8co.github.io/darts/userguide.html および https://unit8co.github.io/darts/generated_api/darts.html
- サンプルノートブック – https://unit8co.github.io/darts/examples.html(MLflowデモを含む)
- ブログとビデオ紹介 – READMEにリンクされたMedium記事と25分のYouTube概要。
TL;DR
Dartsは、時系列予測と異常検知のための本番環境対応のPythonicなツールボックスです。古典的な統計手法と最新のディープラーニングモデルを単一のscikit-learn風インターフェースで統合し、多変量および多系列トレーニングをサポートし、確率的出力を提供し、人気のMLツール(PyTorch Lightning、MLflow)と統合します。複数のライブラリを切り替えることなく、時系列データから信頼できる予測を生成する必要がある人に最適です。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト