統計ロードマップ
2026-04-30·実装·⏱ 約 4

時系列予測 入門 ─ 古典手法から Prophet・深層学習まで

売上予測・需要予測・株価予測。ARIMA・指数平滑化から、Prophet・LightGBM・Temporal Fusion Transformer までの主要手法を実用視点で。

時系列予測 は売上・需要・在庫・株価・気象など、ほぼあらゆる業界で必要とされる ML タスク。一般的な予測問題と違い、時間順序を保つことが鉄則です。

時系列の 3 要素

  • トレンド: 長期的な上昇・下降
  • 季節性: 周期的なパターン(年・週・日)
  • 残差: トレンド・季節性で説明できないノイズ

古典的手法

ARIMA

AR(自己回帰) + I(差分) + MA(移動平均)の組合せ。古いが理論的に整理されており、説明性が高い。

statsmodels で ARIMA
from statsmodels.tsa.arima.model import ARIMA

model = ARIMA(y_train, order=(2, 1, 2))  # (p, d, q)
fit = model.fit()
forecast = fit.forecast(steps=30)

指数平滑化(Holt-Winters)

最近のデータほど重み付けして平滑化。トレンド・季節性も扱える。

Prophet ─ Facebook 製の万能ツール

祝日効果・季節性・変化点を GUI レベルでパラメータ化 できる。ビジネス用途で爆発的に普及。

Prophet 5 行
from prophet import Prophet
import pandas as pd

df = pd.DataFrame({'ds': dates, 'y': sales})
m = Prophet(yearly_seasonality=True, weekly_seasonality=True)
m.fit(df)
future = m.make_future_dataframe(periods=90)
forecast = m.predict(future)

LightGBM ─ Kaggle 王者

ラグ特徴量(過去 N 日)+ 集計特徴量(過去 7 日平均など)を作って GBDT に渡す。実用最強の選択肢の 1 つ。

ラグ特徴量の作り方
for lag in [1, 7, 14, 30]:
    df[f'lag_{lag}'] = df['y'].shift(lag)

for window in [7, 14, 30]:
    df[f'roll_mean_{window}'] = df['y'].rolling(window).mean()
    df[f'roll_std_{window}'] = df['y'].rolling(window).std()

深層学習 ─ TFT ・ N-BEATS

  • LSTM / GRU: 古典的 RNN、長期依存に弱い
  • Temporal Fusion Transformer (TFT): 解釈性 + 性能
  • N-BEATS: トレンド + 季節性を分解する DL
  • Informer / Autoformer: 長期予測に特化した Transformer 派生
  • TimeGPT: LLM 風時系列基盤モデル(Nixtla)

時系列クロスバリデーション

通常の K-Fold は 未来データで学習 → 過去データで予測 という時間漏れを起こす。代わりに Walk-Forward:

TimeSeriesSplit
from sklearn.model_selection import TimeSeriesSplit

tscv = TimeSeriesSplit(n_splits=5)
for train_idx, val_idx in tscv.split(X):
    X_tr, X_val = X[train_idx], X[val_idx]
    y_tr, y_val = y[train_idx], y[val_idx]
    # 学習・評価

評価指標

  • MAE / RMSE: 標準
  • MAPE: % 表現で経営層に伝えやすい(0 に近い値で破綻)
  • SMAPE: MAPE の対称版、極端な値に頑健
  • MASE: 単純予測(Naive)からの改善度
  • Pinball Loss: 分位点予測の評価

学習リソース

  • [統計検定 準 1 級 教科書](/textbook/grade-pre1) ─ 時系列の章
  • [scikit-learn 入門](/blog/sklearn-introduction)
  • [Pandas Tips](/blog/pandas-tips-for-ml) ─ 日付操作
  • [ベイズ最適化](/blog/bayesian-optimization)
Related Articles

関連記事