JA EN
体系時系列データ系
·★ 会員·12分で読めます

時系列予測を1から解説 — 古典手法から基盤モデルまで

時系列予測が普通の回帰と決定的に違うのは、行が独立でないことと、テストが必ず未来側にあることです。自己相関と定常性から入り、ARIMAの直感、季節とトレンドの分解、深層モデルと時系列基盤モデルの位置づけまで。最後に、実務で最も事故が多い「評価」——ランダム分割の禁止、バックテストの作法、MAPEの罠を厚く扱います。

対象timeseriesタスクforecasting

普通の回帰と、どこが違うのか

「明日の売上を、今日までの売上から当てる」。一見ただの回帰問題で、学習ライブラリに投げれば数字は出ます。しかし出てきた検証スコアは、ほぼ確実に本番より良く出ます。時系列には、普通の教師あり学習が前提にしている性質が4つとも欠けているからです。

行が独立でない。 通常の学習は「サンプルは互いに独立で同じ分布から来る」を前提にします。時系列では隣り合う2点がほとんど同じ情報を持つ。今日の気温を知っていれば、明日の気温はもう半分わかっています。

順序に意味がある。 行をシャッフルしても画像分類なら何も失われませんが、時系列では情報そのものが消えます。

分布が動く。 平均も分散も時間とともに変わります。去年の需要水準は、今年の需要水準ではありません。

未来が簡単に混入する。 「7日移動平均」のような特徴量を1本作った瞬間、予測時点では知り得ない値が入り込む余地が生まれます。この事故は最後の節で詳しく扱います。

自己相関: 過去の自分が、最強の特徴量

系列を kk ステップずらして自分自身と比べたときの相関を、ラグ kk自己相関と呼びます。

ρk=Cov(yt, ytk)Var(yt)\rho_k = \frac{\mathrm{Cov}(y_t,\ y_{t-k})}{\mathrm{Var}(y_t)}
(1)

yty_t は時刻 tt の値、Cov\mathrm{Cov} は共分散(2つが一緒に動く度合い)、Var\mathrm{Var} は分散です。ρk\rho_k が1に近ければ「kk ステップ前を見れば今がだいたいわかる」。つまりこの式は「今と kk ステップ前が、どれくらい一緒に上下したか」を、その系列自身の振れ幅で割って目盛りを揃えただけのものです。0に近ければ、kk ステップ前は今について何も語っていません。

これを k=1,2,3,k=1,2,3,\dots と並べたグラフがACF(自己相関プロット)で、時系列の仕事はほぼここから始まります。日次の小売データなら k=7k=7 に山が立ち(曜日の周期)、月次なら k=12k=12 に立つ。周期の正体が一目でわかります。

定常性: 「同じルールが続く」という賭け

古典的な手法はどれも定常性——平均・分散・自己相関の構造が時間によらず一定、という性質を前提にします。モデルは過去から法則を推定して未来に当てはめるので、法則が途中で変わるなら推定そのものに意味がないからです。

現実の系列はまず定常ではありません。トレンドがあれば平均が動くので、差分を取ります。

Δyt=ytyt1\Delta y_t = y_t - y_{t-1}
(2)

「値そのもの」を「前日からの変化量」に置き換えるだけです。要するに Δyt\Delta y_t は「1つ前の時点より、いくつ増えたか」だけを並べ直した新しい系列で、「どれくらい高い水準にいるか」という話が「どちらへどれだけ動いたか」という話に入れ替わります。直線的なトレンドはこれ1回で消え、曲がったトレンドなら2回。1年周期なら ytyt12y_t - y_{t-12} という季節差分を使います。

ただし取りすぎてはいけません。本来の信号まで削り、残ったノイズを増幅します。「定常になる最小回数だけ」が原則です。

FIG 1次数を上げると訓練点は完璧に通るのに、少し外に出た途端に暴れる。時系列ではこの「少し外」が必ず未来側にあり、しかも訓練区間の終わりの直後から始まる。過去への当てはまりの良さは、将来の当たりやすさを何ひとつ保証しない

ARIMA: 3つの部品でできている

ARIMAは名前が3つの部品の頭文字になっているだけの、素直なモデルです。

AR(自己回帰) は、過去の自分の線形和で今を説明します。

yt=c+ϕ1yt1++ϕpytp+εty_t = c + \phi_1 y_{t-1} + \cdots + \phi_p y_{t-p} + \varepsilon_t
(3)

ϕi\phi_iii ステップ前の値にかける重み、pp は何ステップ前まで見るか、εt\varepsilon_t は誤差、cc は定数です。言い換えれば「今日の値=基準になる値+1つ前の値の何割か+2つ前の値の何割か+…+その日だけの運」と読める式です。直感は慣性——「昨日高かったから今日も高い」。

MA(移動平均) は、過去の誤差の線形和です。

yt=μ+εt+θ1εt1++θqεtqy_t = \mu + \varepsilon_t + \theta_1 \varepsilon_{t-1} + \cdots + \theta_q \varepsilon_{t-q}
(4)

μ\mu は平均、θj\theta_jjj ステップ前の誤差にかける重み。つまり「今日の値=いつもの平均+今日ぶんの運+昨日の運の何割かが尾を引いた分+…」ということ。ここでの誤差は、モデルが説明しきれなかった予想外のぶんを指します。直感はショックの残り香——「先週の予想外の落ち込みが、まだ尾を引いている」。名前は紛らわしいのですが、平滑化の移動平均とは別物です。

I(和分) が、さきほどの差分です。dd 回差分してからARとMAを当てる、というだけ。これで ARIMA(p,d,q)\mathrm{ARIMA}(p,d,q) が揃います。季節成分を別枠で持たせたものが SARIMA(p,d,q)(P,D,Q)s\mathrm{SARIMA}(p,d,q)(P,D,Q)_sss は周期です。

もう1つの基本動作が分解です。

この先にあるもの

§

ここから先は会員限定です

解説記事371本・教科書26章・学生モード48単元・論文精読6本が、月額¥490ですべて読み放題になります。新しい解説は毎日3本ずつ増えます。いつでも解約でき、解約後も期間の終わりまで読めます。

会員の方はログインすると続きが表示されます

コメント

コメントにはログインが必要です