🌊

時刻の特徴量化に関する考察

2022/03/21に公開

モチベーション

AIモデル開発において、時刻(あるいは月や日)を特徴量とすることはよくありますが、どのように表現するのがよいのでしょうか?

  • 時刻は数字なのでそのまま特徴量にする
    • 欠点: 例えば23時と0時は実際には近いにも関わらず、それが反映できない。
  • 24次元のone-hotエンコーディングする
    • 欠点: 時刻の順序性が表せない。また、単なる1次元を表すのに24次元も要するのはスマートじゃない。
  • 時刻を極座標で考えて(cosθ, sinθ)という2変数で表す
    • 欠点: モデルがこの2変数をちゃんとペアとして捉えてくれる保証はない。

このように、どのアプローチもしっくりこない感があります。そこで別のアプローチを考えました。

提案手法

  • 0時を中心に学ぶモデル、1時を中心に学ぶモデル、2時を中心に学ぶモデル・・・というように、24個のモデルを作る。
  • 時刻はそのまま1次元の数値として扱うが、中心に学ぶ時刻に応じて以下のように変換する。
    • 例えば9時を中心に学ぶモデルでは、7時→-2, 8時→-1, 9時→0, 10時→+1, 11時→+2 という具合。
  • 最後に24個のモデルをアンサンブルする

まとめ

ただの思考実験であって、検証はしていません。

Discussion