第6章 6-6 / モデル化と機械学習

時系列分析

このページで学ぶこと

本ページ(6-6)では、時間の経過にともなって変化する時系列データの扱い方を整理します。時系列グラフによる周期性やトレンドの確認、移動平均、回帰や相関計算における注意点といった基礎的な扱いから、時間軸で訓練データとテストデータを分割する理由、そして長期トレンド・季節成分・周期性・ノイズ・定常性といった、時系列分析を行う際にもつべき視点までをまとめて扱います。

時系列データは、通常のデータと同じ感覚で分析すると思わぬ落とし穴にはまります。「時間」という軸が持つ特殊性を意識しながら読み進めてください。

1. 時系列データとは何か

時系列データ※1とは、時間の経過にそって記録された一連のデータのことです。毎日の売上、毎月の来店客数、毎年の人口推移など、「いつのデータか」という時間軸が意味を持つデータはすべて時系列データにあたります。

時系列データを扱ううえでまず基本になるのが、時系列グラフ(折れ線グラフ)を描いて、周期性やトレンドを目で確認することです。数値の羅列だけを見ていても気づきにくい「右肩上がりの傾向」や「毎年決まった時期に高くなる波」が、グラフにすることで一目瞭然になります。時系列データとは何か、その基礎的な扱いについて説明できることは、DS検定の必須スキルチェック項目です。

EXAMPLE ― 時系列グラフから見えるもの
  • アイスクリームの月次売上をグラフにすると、夏に高く冬に低いという毎年繰り返す波(周期性)が見える
  • ある会社の年間売上をグラフにすると、多少の凸凹はあっても長期的には右肩上がりの傾向(トレンド)が見える

時系列データの変動をならして傾向をつかむ代表的な手法が移動平均※3です。移動平均は、ある時点の前後(または直前)の一定期間の値を平均することで、日々の細かな変動(ノイズ)を滑らかにし、大きな流れ(トレンド)を見やすくする手法です。たとえば「7日移動平均」であれば、直近7日分の値を平均した系列を描くことで、曜日による細かな変動をならして本質的な動きを捉えられます。

POINT

時系列データでは、回帰分析や相関係数をそのまま適用するときの注意も必要です。トレンドを持つ2つの時系列データは、本質的に無関係でも「見かけ上、強い相関」が出てしまうことがあります(疑似相関※4)。時系列同士の相関を見るときは、まずトレンドを取り除いてから考える視点が欠かせません。

さえちゃん
さえ

「アイスの売上」と「水難事故の件数」を並べたら相関係数がすごく高く出た、なんて話、聞いたことあるかな?どっちも「夏に増える」という共通の背景があるだけなんだよね。時系列データの相関は要注意ポイント!

2. 時間軸で訓練データとテストデータを分ける理由

6-1で学んだホールドアウト法では、通常のデータはランダムに訓練データとテストデータに分割します。しかし、時系列データの場合はランダムに分割してはいけません。時系列データを扱うときは、時間軸に沿って、過去のデータを訓練データ、それより未来のデータをテストデータとして分割するのが原則です。

なぜランダム分割が不適切なのでしょうか。時系列予測モデルの本来の目的は、「過去のデータから、まだ見ぬ未来を予測する」ことです。もしランダムに分割してしまうと、訓練データの中に、テストデータより時間的に後のデータ(未来の情報)が混ざってしまう可能性があります。これは、本来知り得ないはずの未来の情報を使ってモデルを学習してしまう「情報のリーク(漏えい)」にあたり、実際の運用では絶対に起こり得ない好条件でモデルを評価してしまうことになります。時系列データの場合は、時間軸で訓練データとテストデータに分割する理由を理解していることは、DS検定のスキルチェック項目です。

EXAMPLE ― 正しい分割・誤った分割
  • 正しい分割:2020年〜2023年のデータを訓練データ、2024年のデータをテストデータとする(時間軸に沿った分割)
  • 誤った分割:2020年〜2024年のデータからランダムに70%を訓練データ、30%をテストデータに選ぶ(未来の情報が訓練に混ざる恐れがある)
POINT

時系列データの分割は「過去で学んで、未来で試す」が大原則です。本番運用でも「未来はまだ来ていない」ため、テスト時に未来の情報を使えるような分割をしてしまうと、実運用ではあり得ない高い精度が出て、本番で期待外れの結果に終わる危険があります。

さえちゃん
さえ

時系列データをランダムに分割しちゃうのは、「来週のテスト範囲を、来週の答案を見ながら勉強する」ようなもの。本番ではそんなカンニングできないよね。時間軸に沿った分割、絶対忘れないでね!

3. 時系列分析を行う際にもつべき視点

時系列データを深く分析するには、単純な折れ線グラフを眺めるだけでなく、いくつかの構成要素に分けて捉える視点が有効です。DS検定でも、時系列分析を行う際にもつべき視点として、以下の要素を理解していることが求められます。

視点意味具体例
長期トレンド 数年〜数十年単位で見える、緩やかな増加・減少の傾向 人口の長期的な増減、企業の売上成長
季節成分 1年など決まった周期で繰り返される変動 夏に売れるアイス、冬のボーナス商戦
周期性 季節に限らず一定間隔で繰り返される変動全般 景気循環、曜日による来店客数の波
ノイズ(不規則変動) トレンドや周期性では説明できない、偶発的な変動 突発的な悪天候による一時的な売上減少
定常性 データの平均や分散といった統計的性質が時間によらず一定であること 安定した工程からの計測データ(定常)、右肩上がりの売上(非定常)

とくに定常性※2は、多くの時系列分析の手法が前提とする重要な性質です。データにトレンドがある(平均が時間とともに変化していく)場合、そのままでは「定常」ではないため、多くの伝統的な時系列モデルをそのまま適用できません。この場合、前の時点との差を取る差分※5を計算するなどして、データを定常な状態に変換してから分析するというアプローチが一般的です。

EXAMPLE ― 4つの要素に分解する
  • あるアパレルショップの月次売上を分解すると、「緩やかな成長トレンド」+「夏・冬に強い季節成分」+「不定期のセール実施による周期的な変動」+「突発的な悪天候によるノイズ」の組み合わせとして理解できる
POINT

時系列データを見たら、まず「トレンド・季節性・周期性・ノイズ・定常性」の5つの視点でデータを腑分けしてみましょう。この視点を持つだけで、単なる折れ線グラフの印象論から一歩進んだ分析ができるようになります。

さえちゃん
さえ

「トレンド・季節性・周期性・ノイズ・定常性」って言葉、丸暗記するより「売上のグラフを見ながら、どの部分がどれに当たるかな」って考えると頭に残りやすいよ。試験でも用語の意味を問う問題が出やすいから要チェック!

まとめ

本ページ(6-6)では、時系列データの基礎的な扱い方を整理しました。最後に振り返っておきましょう。

  1. 時系列データの基礎 ― 時系列グラフによる周期性・トレンドの確認、移動平均、相関計算の注意点
  2. 時間軸での分割 ― ランダム分割ではなく、時間軸に沿って訓練データとテストデータを分ける理由
  3. 時系列分析を行う視点 ― 長期トレンド、季節成分、周期性、ノイズ、定常性という5つの見方

次のページ(6-7)では、ニューラルネットワークをさらに発展させた「深層学習(ディープラーニング)」の基礎を扱います。

脚注 ─ 用語解説
  1. 時系列データ … 時間の経過にそって記録された一連のデータのこと。売上や気温、人口推移など「いつのデータか」が意味を持つデータを指す。
  2. 定常性 … データの平均や分散といった統計的な性質が、時間が経っても変化せず一定であること。多くの時系列分析手法の前提となる性質。
  3. 移動平均 … ある時点の前後や直前の一定期間の値を平均することで、細かな変動をならして大きな流れを見やすくする手法のこと。
  4. 疑似相関 … 本質的には無関係な2つの変数が、第三の要因(トレンドや季節性など)の影響で見かけ上強い相関を示してしまう現象のこと。
  5. 差分 … 時系列データのある時点の値から、前の時点の値を差し引く計算のこと。トレンドを取り除き、データを定常な状態に近づけるために使われる。