時系列モデルの作成手順5ステップを徹底解説

時系列モデルの作成手順5ステップを徹底解説しています。これさえ見ればとりあえず時系列モデルの基礎は習得したようなものです。
目次
結局全体像を頭の中でつかめないと時系列モデルは作りづらい
「定常性」「自己相関」「偏自己相関」など一部の概念を掴めても、実際時系列モデルを作成するときのどのように活用したらいいかまだ明確に掴めてない方も多いのではないでしょうか?
今回は時系列予測モデルを作成するときに手順を解説したいと思います。
時系列データの予測モデル構築の流れ
時系列モデルを作成するには
1.テーマ設定
2.データ準備
3.予測モデル検討
4.予測モデル構築
5.予測モデル評価
この5つのステップで基本的には行います。
1.テーマ設定
実務におけるデータ分析のテーマ設定は、確かに非常に重要なステップです。クライアントからの要望や目的を正確に理解し、それに基づいて分析の方針を決めることが求められます。
例にスーパーの商品の需要予測のシチュエーションを考えると、以下のような追加の考慮点や解説が挙げられます。
【目的の明確化】
クライアントが「需要予測をしたい」と言っても、その背後にはさまざまな目的があるかと思います。例えば、在庫管理を効率化したい、売上を増加させたい、ロスを減少させたいなど、具体的な目的を明確にすることで、分析の方向性を正しく定めることができます。
【データの利用】
需要予測をするためには、過去の販売データや商品の属性、季節性、プロモーション活動の有無などの情報を考慮する必要があります。これらのデータが十分に揃っているか、またデータの品質や精度を確認するステップが必要です。
【期間の設定】
予測の対象となる期間を決定することも大切です。短期間の予測であれば、直近のトレンドや季節性を強く考慮する必要がありますが、長期間の予測では、業界全体のトレンドや外部環境の変化を考慮する必要が出てきます。
【商品の範囲】
すべての商品を一律に予測するのではなく、売上の大部分を占める主要な商品や、プロモーション活動を予定している商品など、特定の商品に焦点を絞ることで、より精度の高い予測を行うことが可能となります。
2.データ準備
データ準備の中でも3ステップあります。
1.データの用意(データクレンジング含む)
2.データの分析
3.データの前処理
それぞれ解説していきます。
【データの用意(データクレンジング含む)】
ここが一番大変な作業です。しかし、精度に直結する部分なので頑張りましょう!
1.データ収集
・データソースの特定: どこからデータを取得するかを明確にします。データベース、API、CSVファイル、外部サービスなど、様々なデータソースが考えられます。
・データの取得: 必要なデータを正確に、かつ効率的に取得します。この際、データの量や種類、取得の頻度などを考慮します。
2.データクレンジング:
・欠損値の処理: データに欠損がある場合、その原因を特定し、欠損を埋める方法(平均値、中央値、前の値、次の値、予測モデルなど)を選択します。特に時系列データでは、連続したデータポイント間の欠損が発生することがあります。
・外れ値の検出と処理: 統計的手法やビジュアル化を利用して外れ値を特定し、適切に処理します。外れ値の原因を理解し、そのまま使用するか、修正するか、除外するかを決定します。
・日付データの整合性確認: 時系列データの場合、日付の連続性や周期性を確認します。日付のギャップや重複がないかを検証し、必要に応じて修正します。
【時系列データの分析】
時系列データの分析は大まかに2つに分かれます。
①基礎的な分析
・基本的な特徴量の確認
・これはデータの基本的な統計情報(平均、中央値、最大値、最小値など)の確認を意味します。これにより、データの大まかな傾向や特徴を把握することができます。
・変数の相関係数や分布の確認
・相関係数は、2つの変数間の関連性の強さや方向を示す値です。時系列データの場合、ラグを持った変数間の相関も考慮することがあります。
・ざっと変数の分布を確認することで目的変数に効いてきそうな説明変数を推定できます。
②時系列データ特有の分析
画像引用:
https://qiita.com/MuAuan/items/3a0273ba8be4035895be
https://www.salesanalytics.co.jp/datascience/datascience174/
Pythonで時系列解析・超入門(その1)時系列データに対する3つの特徴把握方法(変動成分・定常性・コレログラム) – セールスアナリティクス (salesanalytics.co.jp)
相互相関で描く時系列グラフィカルモデリング(Python版) – セールスアナリティクス (salesanalytics.co.jp)
・変動成分の確認
画像引用:https://qiita.com/MuAuan/items/3a0273ba8be4035895be
時系列データは、トレンド、季節性、残差の3つの成分に分解されることが多いです。これにより、データの背後にあるパターンや周期性を理解することができます。
王道的な分解方法はSTL分解です。
・定常性の確認:
定常性は、時系列データの平均や分散が時間に依存しない特性を指します。多くの時系列モデルはデータの定常性を前提としているため、定常性の有無を確認し、非定常なデータに対しては差分取りなどの変換を行います。
詳しくはこちらの記事で解説しています。時系列解析でよく聞く定常性とは?検定方法やなぜ重要なのか解説
・自己相関係数、偏相関係数の確認:
自己相関は、元データytとその時差jのyt-jとの相関を示す値です。偏相関は、他の時点での時差の影響を降り除いた純粋な相関を示します。これらは、ARIMAなどのモデルのパラメータ選択の手助けとなります。
・相互相関係数の確認:
相互相関で描く時系列グラフィカルモデリング(Python版) – セールスアナリティクス (salesanalytics.co.jp)
これは2つの異なる時系列データ間の関連性を示す値です。例えば、気温とアイスクリームの売上といった、異なる2つの時系列データ間の関連性を調査する際に使用されます。
【データの前処理】
データの前処理では時系列データ特有の前処理と、どのデータにも共通する前処理がありますが、
時系列データ特有の前処理について解説します。
【時系列データ特有の前処理の方法】
・ラグ特徴量などの特徴量追加
他にもローリング特徴量など様々なものがあります。
・非定常→定常化処理
定常化処理に使われる主な方法としては差分取得や季節差分,box-cox変換や対数変換などがあります。
3.予測モデル検討
ここでは予測モデルを検討します。
予測モデルの種類としては以下の2種類存在します。
①時系列モデル
- ARIMAモデル:
- ARIMAはAutoRegressive Integrated Moving Averageの略で、自己回帰項、差分、移動平均項の3つの要素からなるモデルです。定常性を持つ時系列データに適しており、短期の予測によく使用されます。
- SARIMAモデル:
- SARIMAはSeasonal ARIMAの略で、ARIMAモデルに季節性を取り入れたものです。季節的な変動を持つデータに適しています。
- ホルトウィンターズモデル:
- このモデルは、トレンド、季節性、残差の3つの成分を考慮して時系列データを予測します。特に季節性の強いデータに適しています。
- Prophetモデル:
- Facebookが開発した時系列予測モデルで、トレンドや季節性、特定のイベントの影響を考慮して予測します。使いやすさと柔軟性が特徴です。
- DeepAR:
- Amazonが提供する深層学習を用いた時系列予測モデルです。複数の時系列データを同時に考慮して、高精度な予測を行うことが可能です。
②テーブルデータ系の予測モデル
- XGBoost:
- XGBoostは、勾配ブースティングを用いた決定木ベースのモデルです。非常に高い予測精度を持ち、多くのデータコンペティションで使用される人気のモデルです。
- LightGBM:
- LightGBMも勾配ブースティングを用いた決定木モデルの一つで、Microsoftが開発しました。XGBoostよりも高速で、大量のデータにも効果的に対応できるのが特徴です。
4.予測モデル構築
ここでは3で検討したモデルを実際に構築するステップになります。
交差検証は、モデルの汎化性能を評価するための手法として一般的に用いられます。
しかし、時系列データにおいては通常の交差検証を適用することは難しいため、特有の方法が取られます。
【通常の交差検証との違い】
通常の(非時系列データに対する)交差検証では、データセットをランダムに分割して学習と検証を行います。しかし、時系列データの場合、データの時間的な順序を保持することが非常に重要です。このため、未来のデータを使って過去のデータを予測するという状況を避ける必要があります。
【時系列データにおける交差検証】
1.エクスパンディング型 (Expanding Window)
- この方法では、学習データのサイズを一定に保ちつつ、検証データのサイズを増やしていく形式を取ります。初回では、最初のn期間を学習データとして、次のm期間を検証データとして使用します。次のイテレーションでは、最初のn+m期間を学習データとして、次のm期間を検証データとして使用します。このプロセスをデータが尽きるまで繰り返します。
2.ローリング型 (Rolling Window)
- この方法では、学習データと検証データのサイズを一定に保ちながら、窓を時間的に移動させていきます。初回では、最初のn期間を学習データとして、次のm期間を検証データとして使用します。次のイテレーションでは、2期間目からn+1期間までを学習データとして、次のm期間を検証データとして使用します。このプロセスをデータが尽きるまで繰り返します。
5.予測モデル評価
予測モデル評価には有名なもでの自由度調整済決定係数やMAPE、RMSEというものがあります。
1.自由度調整済決定係数(Adjusted R-squared):
- R-squared(決定係数)は、モデルがデータの変動をどれだけ説明できるかを示す指標です。値は0から1の間で、1に近いほどモデルがデータをよく説明していることを意味します。
- しかし、モデルに新しい変数を追加すると、R-squaredは必ずしも上がるとは限らず、過学習のリスクがあります。この問題を解決するために、自由度調整済寄与率が用いられます。これは、使用されている変数の数を考慮してR-squaredを調整したものです。
2.MAPE (Mean Absolute Percentage Error):
- MAPEは、実際の値と予測値の差の絶対値のパーセンテージを平均したものです。この値が小さいほど、モデルの予測精度が高いと言えます。
- MAPEは、予測エラーの相対的な大きさを評価するための指標であり、特にビジネスのコンテキストでの予測モデルの評価によく用いられます。
3.RMSE (Root Mean Square Error):
- RMSEは、実際の値と予測値の差の2乗の平均の平方根として計算されます。この値が小さいほど、モデルの予測精度が高いと言えます。
- RMSEは、予測エラーの絶対的な大きさを評価するための指標であり、特に数値的な評価が求められる場面での予測モデルの評価によく用いられます。
まとめ
以上で5つのステップの解説でした。
実際に大変なのはテーマ設定だったり、データの用意なんですよね笑
時系列データ特有ステップがあるため、イメージを理解して取り組んでいきましょう!