時系列予測を1から解説 — 古典手法から基盤モデルまで
時系列予測が普通の回帰と決定的に違うのは、行が独立でないことと、テストが必ず未来側にあることです。自己相関と定常性から入り、ARIMAの直感、季節とトレンドの分解、深層モデルと時系列基盤モデルの位置づけまで。最後に、実務で最も事故が多い「評価」——ランダム分割の禁止、バックテストの作法、MAPEの罠を厚く扱います。
普通の回帰と、どこが違うのか
「明日の売上を、今日までの売上から当てる」。一見ただの回帰問題で、学習ライブラリに投げれば数字は出ます。しかし出てきた検証スコアは、ほぼ確実に本番より良く出ます。時系列には、普通の教師あり学習が前提にしている性質が4つとも欠けているからです。
行が独立でない。 通常の学習は「サンプルは互いに独立で同じ分布から来る」を前提にします。時系列では隣り合う2点がほとんど同じ情報を持つ。今日の気温を知っていれば、明日の気温はもう半分わかっています。
順序に意味がある。 行をシャッフルしても画像分類なら何も失われませんが、時系列では情報そのものが消えます。
分布が動く。 平均も分散も時間とともに変わります。去年の需要水準は、今年の需要水準ではありません。
未来が簡単に混入する。 「7日移動平均」のような特徴量を1本作った瞬間、予測時点では知り得ない値が入り込む余地が生まれます。この事故は最後の節で詳しく扱います。
自己相関: 過去の自分が、最強の特徴量
系列を ステップずらして自分自身と比べたときの相関を、ラグ の自己相関と呼びます。
は時刻 の値、 は共分散(2つが一緒に動く度合い)、 は分散です。 が1に近ければ「 ステップ前を見れば今がだいたいわかる」。つまりこの式は「今と ステップ前が、どれくらい一緒に上下したか」を、その系列自身の振れ幅で割って目盛りを揃えただけのものです。0に近ければ、 ステップ前は今について何も語っていません。
これを と並べたグラフがACF(自己相関プロット)で、時系列の仕事はほぼここから始まります。日次の小売データなら に山が立ち(曜日の周期)、月次なら に立つ。周期の正体が一目でわかります。
定常性: 「同じルールが続く」という賭け
古典的な手法はどれも定常性——平均・分散・自己相関の構造が時間によらず一定、という性質を前提にします。モデルは過去から法則を推定して未来に当てはめるので、法則が途中で変わるなら推定そのものに意味がないからです。
現実の系列はまず定常ではありません。トレンドがあれば平均が動くので、差分を取ります。
「値そのもの」を「前日からの変化量」に置き換えるだけです。要するに は「1つ前の時点より、いくつ増えたか」だけを並べ直した新しい系列で、「どれくらい高い水準にいるか」という話が「どちらへどれだけ動いたか」という話に入れ替わります。直線的なトレンドはこれ1回で消え、曲がったトレンドなら2回。1年周期なら という季節差分を使います。
ただし取りすぎてはいけません。本来の信号まで削り、残ったノイズを増幅します。「定常になる最小回数だけ」が原則です。
ARIMA: 3つの部品でできている
ARIMAは名前が3つの部品の頭文字になっているだけの、素直なモデルです。
AR(自己回帰) は、過去の自分の線形和で今を説明します。
は ステップ前の値にかける重み、 は何ステップ前まで見るか、 は誤差、 は定数です。言い換えれば「今日の値=基準になる値+1つ前の値の何割か+2つ前の値の何割か+…+その日だけの運」と読める式です。直感は慣性——「昨日高かったから今日も高い」。
MA(移動平均) は、過去の誤差の線形和です。
は平均、 は ステップ前の誤差にかける重み。つまり「今日の値=いつもの平均+今日ぶんの運+昨日の運の何割かが尾を引いた分+…」ということ。ここでの誤差は、モデルが説明しきれなかった予想外のぶんを指します。直感はショックの残り香——「先週の予想外の落ち込みが、まだ尾を引いている」。名前は紛らわしいのですが、平滑化の移動平均とは別物です。
I(和分) が、さきほどの差分です。 回差分してからARとMAを当てる、というだけ。これで が揃います。季節成分を別枠で持たせたものが 、 は周期です。
コメント
コメントにはログインが必要です