時間や日付データの取り扱いと特徴量生成 | 特徴量エンジニアリング | Pythonによる機械学習を学ぶ

スポンサーリンク
スポンサーリンク
amazon
プライム感謝祭
--:--:--
~
ad. 価格範囲を指定して商品を探せます

時間や日付データの取り扱いと特徴量生成

時間や日付データは、売上予測や需要予測、アクセス解析など多くの機械学習モデルで重要な役割を果たします。日時情報そのものを使うだけではなく、年・月・曜日・時間帯などの特徴量に変換することで、モデルがデータの傾向を学習しやすくなります。本記事では、時間や日付データから特徴量を作成する代表的な方法について解説します。

時間や日付データの取り扱いと特徴量生成を図で理解する

時間や日付データの取り扱いと特徴量生成を図で理解する

時間や日付データから特徴量を作る理由

日時データには、季節性や曜日ごとの傾向、時間帯による変化など、多くの情報が含まれています。そのままでは活用しづらいため、分析しやすい形に分解して特徴量として利用します。

例えば、ECサイトの売上データであれば、次のような特徴量が役立ちます。

  • 週末か平日か
  • 月初か月末か
  • 季節や四半期
  • 朝・昼・夜などの時間帯
  • 祝日や連休の有無

時間や日付データから生成できる代表的な特徴量

日時データからは、次のような特徴量を抽出できます。

特徴量 内容 活用例
年(Year) データが属する年 長期的なトレンド分析
月(Month) 1~12月 季節性の把握
日(Day) 月内の日付 月末・月初の傾向分析
曜日(Day of Week) 月曜~日曜 来店数やアクセス数の分析
時間(Hour) 0~23時 時間帯別の需要予測
四半期(Quarter) 第1~第4四半期 業績分析
季節(Season) 春・夏・秋・冬 需要予測

年・月・曜日・時間を特徴量として利用する

日時データは分解して利用するのが一般的です。例えば「2025-08-15 18:30:00」という日時であれば、次のような特徴量に変換できます。

元データ 生成される特徴量
2025-08-15 18:30:00 年=2025、月=8、日=15、曜日=金曜日、時間=18

これらを利用することで、モデルは「金曜日の夕方は売上が増える」といった傾向を学習できるようになります。

時間データの周期性を考慮する

時間や月は周期的なデータです。例えば、12月と1月は数値上は離れていますが、実際には連続しています。

このような周期性を表現するために、サイン(sin)とコサイン(cos)を利用した変換がよく使われます。

項目 特徴
通常の月データ 12月と1月が大きく離れて見える
sin・cos変換 周期性を維持したまま表現できる

この手法は、月・曜日・時間など周期性を持つデータで特に有効です。

時間帯をカテゴリ化する

時間そのものではなく、時間帯として分類する方法もあります。

時間帯 例
朝 5時~11時
昼 12時~16時
夕方 17時~20時
夜 21時~4時

例えばECサイトであれば、夜間に購入が増える商品や、朝にアクセスが集中するサービスなどを学習できるようになります。

祝日やイベント情報を追加する

日時データだけでは把握できない要素として、祝日やイベント情報があります。

  • 祝日かどうか
  • 連休中かどうか
  • 年末年始かどうか
  • セール期間中かどうか
  • 学校の長期休暇期間かどうか

これらを特徴量として追加すると、売上予測や需要予測の精度向上につながることがあります。

時間や日付データを扱う際の注意点

  • タイムゾーンを統一する: 異なる地域のデータを扱う場合は特に重要です。
  • 欠損日時を確認する: 欠損や異常値があると分析結果に影響します。
  • 周期性を考慮する: 月や時間は単純な数値として扱わない方が良い場合があります。
  • 将来情報を使わない: 予測時点で取得できない情報を特徴量に含めないよう注意します。

まとめ

時間や日付データには、年・月・曜日・時間帯・季節など多くの有用な情報が含まれています。これらを適切な特徴量として抽出することで、機械学習モデルは時間的なパターンや周期性を学習しやすくなります。また、祝日情報や時間帯分類、周期性を考慮した変換を組み合わせることで、予測精度の向上が期待できます。