🌊
時刻の特徴量化に関する考察
モチベーション
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