AutoTS について
AutoTS は、大規模な時系列予測を迅速に展開するための Python パッケージです。sklearn スタイルで利用できる数十の予測モデルと 30 以上の時系列変換を備え、遺伝的アルゴリズムによってモデル、前処理、アンサンブルの最適な組み合わせを探索します。
主な機能
- 01sklearn スタイルの予測モデルと変換
- 02遺伝的アルゴリズムによるモデルとアンサンブルの探索
- 03水平型およびモザイク型のアンサンブル
- 04多変量および確率的な予測出力
- 05テンプレートのインポートとエクスポート
活用シーン
- 01数万の類似した時系列の一括予測
- 02売上や市場データでのモデルの自動比較
- 03メモリ制約のある環境でのバッチ分割実行
MCP 対応
MCP クライアントから接続できる MCP サーバー(autots-mcp)を含みます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
AutoTS
AutoTS は、高精度な予測を大規模に迅速に導入するために設計された、Python 用の時系列パッケージです。公式デモアプリを使って、ブラウザーでお試しください。
2023 年、AutoTS は M6 予測コンペティションで優勝し、12 か月間の株式市場予測において、最も高いパフォーマンスの投資判断を実現しました。
.fit() と .predict() を使う sklearn スタイルで利用できる予測モデルが数十種類あります。
これらには、ナイーブモデル、統計モデル、機械学習モデル、ディープラーニングモデルが含まれます。
さらに、.fit()、.transform()、.inverse_transform() を使う sklearn スタイルで利用できる、時系列専用の変換処理が 30 種類以上あります。
これらはすべて、独自オブジェクトに変換することなく、Pandas DataFrame に直接適用できます。
すべてのモデルは、多変量(複数の時系列)出力の予測に対応し、確率的(上限/下限)予測にも対応しています。
ほとんどのモデルは、数万から数十万の入力系列に容易にスケールできます。
また、多くのモデルはユーザー定義の外生回帰変数の受け渡しにも対応しています。
これらのモデルはすべて、遺伝的アルゴリズムを通じて、指定されたデータセットに最適なモデル、前処理、アンサンブルを自動的に見つける AutoML の特徴量探索に統合できるよう設計されています。
水平型およびモザイク型のアンサンブルは、代表的なアンサンブル方式です。スケーラビリティを維持しながら、各系列に可能な限り精度の高いモデルを割り当てられます。
さまざまな評価指標と交差検証オプション、サブセットと重み付けの適用機能、回帰変数生成ツール、シミュレーション予測モード、イベントリスク予測、ライブデータセット、テンプレートのインポートとエクスポート、プロット、そして各種データ整形パラメーターが、利用可能な機能を補完します。
目次
インストール
pip install autots
これには基本的なモデルの依存関係が含まれていますが、一部のモデルや手法には追加パッケージが必要です。
似た名前を採用している別のプロジェクトがいくつかあるため、正しい AutoTS のコード、論文、ドキュメントを参照していることをご確認ください。
基本的な使い方
AutoTS の入力データは、long 形式または wide 形式である必要があります。
- wide 形式は、
pandas.DatetimeIndexを持つpandas.DataFrameで、各列が異なる系列を表します。 - long 形式は、次の 3 列で構成されます。
- 日付(できれば pandas が認識する
datetime形式) - 系列 ID。単一の時系列の場合、series_id は
= Noneにできます。 - 値
- 日付(できれば pandas が認識する
- long 形式のデータでは、各列の名前を
.fit()にdate_col、id_col、value_colとして渡します。wide 形式ではパラメーターは不要です。
低レベル関数は、wide 形式のデータ専用に設計されています。
# also load: _hourly, _monthly, _weekly, _yearly, or _live_daily
from autots import AutoTS, load_daily
# sample datasets can be used in either of the long or wide import shapes
long = False
df = load_daily(long=long)
model = AutoTS(
forecast_length=21,
frequency="infer",
prediction_interval=0.9,
ensemble=None,
model_list="superfast", # "fast", "default", "fast_parallel"
transformer_list="fast", # "superfast",
drop_most_recent=1,
max_generations=4,
num_validations=2,
validation_method="backwards"
)
model = model.fit(
df,
date_col='datetime' if long else None,
value_col='value' if long else None,
id_col='series_id' if long else None,
)
prediction = model.predict()
# plot a sample
prediction.plot(model.df_wide_numeric,
series=model.df_wide_numeric.columns[0],
start_date="2019-01-01")
# Print the details of the best model
print(model)
# point forecasts dataframe
forecasts_df = prediction.forecast
# upper and lower forecasts
forecasts_up, forecasts_low = prediction.upper_forecast, prediction.lower_forecast
# accuracy of all tried model results
model_results = model.results()
# and aggregated from cross validation
validation_results = model.results("validation")
低レベル API、特に scikit-learn スタイルの時系列変換処理の大規模なセクションは、AutoML フレームワークとは独立して利用することもできます。
機能の詳細については、extended_tutorial.mdをご覧ください。
また、production_example.pyもご覧ください。
速度と大規模データのヒント:
- 適切なモデルリスト、特に事前定義されたリストを使用します:
superfast(シンプルで素朴なモデル)とfast(より複雑ですが、より高速で、多数の系列向けに最適化されたモデル)- 多数の CPU コアを利用できる場合は、
fast_parallel(fastとparallelの組み合わせ)またはparalleln_jobsは通常、='auto'でかなり適切な値になりますが、環境に応じて調整してください
- 多数の系列がある場合にクラッシュを回避するには、
scalableリストが最適です。transformer_list = 'scalable'もあります from autots.models.model_list import model_listsで事前定義されたリストの辞書(一部は内部使用向けに定義されています)を確認できます
- 類似した系列が多数ある場合は、
subsetパラメーターを使用します。subset=100は、数万件の類似した系列に対して適切に汎化できることがよくあります。subsetを使用する場合、系列に対するweightsを渡すと、優先度の高い系列に重みを置いたサブセット選択になります。- RAM が制限されている場合は、あらかじめテンプレートをインポートして全インスタンスの開始点としたうえで、データを複数のバッチに分け、AutoTS の複数のインスタンスを実行することで分散できます。
model_interrupt=Trueを設定すると、Ctrl+Cを押したときに現在のモデルのみをスキップします。1.5 秒以内にもう一度Ctrl+Cを押すと実行全体を終了します。または、model_interrupt={"mode": "skip", "double_press_window": 1.2}のように指定して、判定時間を短くしたり長くしたりできます。.fit()のresult_fileメソッドを使用すると、世代ごとに進行状況が保存されます。長時間のトレーニング時に進行状況を保存するのに便利です。復元にはimport_resultsを使用します。- 変換処理はかなり高速ですが、
transformer_max_depthを小さく(たとえば 2 に)設定すると、速度が向上します。また、transformer_list== 'fast' または 'superfast' も活用してください。 - pandas UDF と AutoTS を使用するこちらの例をご覧ください。
- アンサンブルは多数のモデルを実行するため、予測が明らかに遅くなります。「distance」モデルは 2 倍、「simple」モデルは 3~5 倍遅くなります。
ensemble='horizontal-max'とmodel_list='no_shared_fast'の組み合わせは、各モデルが必要な系列に対してのみ実行されるため、多数の CPU コアを利用できる場合に比較的よくスケールします。
num_validationsとmodels_to_validateを減らすと実行時間が短くなりますが、モデル選択の質が下がる可能性があります。- レコード数の多いデータセットでは、適切な場合、アップサンプリング(たとえば、日次から月次の頻度で予測するなど)によってトレーニング時間を短縮できます。
frequencyとaggfuncを調整することで実行できますが、AutoTS にデータを渡す前に行うのが最適です。
- NaN があらかじめ補完されていると処理が速くなります。最適な NaN 補完方法を検索する必要がない場合は、クラスに渡す前に適切な方法で NaN を補完してください。
metric_weightingのruntime_weightingを高い値に設定します。これにより、精度が犠牲になる可能性はありますが、より高速なモデルが選ばれやすくなります。- メモリ不足は、プロセスやカーネルが予期せずクラッシュする最も一般的な原因です。問題が発生した場合は、データのサブセットでテストし、別のモデルリストを使用してみてください。特定のモデルパラメーター(AutoTS のパラメーターではなく、基盤となる予測モデルのパラメーター)に関連するクラッシュを見つけた場合は、報告してください。また、クラッシュの発生状況は基盤となる linpack/blas などの環境構成によって大きく異なるため、環境間でクラッシュの違いが見られるのは想定されることです。
MCP サーバー
./autots/mcp の README.md を参照してください。すべての依存関係をインストールするには pip install autots[mcp] を使用してください。同等の方法として pip install autots-mcp も使用できます。
{
"mcpServers": {
"autots": {
"command": "autots-mcp"
}
}
}
mcp-name: io.github.winedarksea/AutoTS
貢献方法:
- ドキュメントが分かりにくいと感じた箇所について、フィードバックをお寄せください
- AutoTS を使用して、以下にご協力ください。
- GitHub で Issue を作成し、エラーを報告したり機能をリクエストしたりしてください
- ご自身のデータで最上位となったモデルテンプレートを投稿してください(開始時のテンプレートの改善に役立ちます)
- お気に入りのモデルについて、異なる探索グリッドパラメーターをぜひ提案してください
- もちろん、GitHub でコードベースに直接貢献することもできます。
AutoTS の処理
flowchart TD
A[Initiate AutoTS Model] --> B[Import Template]
B --> C[Load Data]
C --> D[Split Data Into Initial Train/Test Holdout]
D --> E[Run Initial Template Models]
E --> F[Evaluate Accuracy Metrics on Results]
F --> G[Generate Score from Accuracy Metrics]
G --> H{Max Generations Reached or Timeout?}
H -->|No| I[Evaluate All Previous Templates]
I --> J[Genetic Algorithm Combines Best Results and New Random Parameters into New Template]
J --> K[Run New Template Models and Evaluate]
K --> G
H -->|Yes| L[Select Best Models by Score for Validation Template]
L --> M[Run Validation Template on Additional Holdouts]
M --> N[Evaluate and Score Validation Results]
N --> O{Create Ensembles?}
O -->|Yes| P[Generate Ensembles from Validation Results]
P --> Q[Run Ensembles Through Validation]
Q --> N
O -->|No| R[Export Best Models Template]
R --> S[Select Single Best Model]
S --> T[Generate Future Time Forecast]
T --> U[Visualize Results]
R --> B[Import Best Models Template]
引用
学術研究で AutoTS を引用する場合は、以下の論文をご利用ください。
Colin Catlin, Adaptive forecasting in dynamic markets: An evaluation of AutoTS within the M6 competition, International Journal of Forecasting, Volume 41, Issue 4, 2025, Pages 1485-1493, ISSN 0169-2070, https://doi.org/10.1016/j.ijforecast.2025.08.004.
Project CATS(Catlin's Automated Time Series)としても知られており、ロゴの由来となっています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。