Machine-Learning
在機器學習中編碼日期時間的最佳實踐
我正在研究一個 Kaggle 問題(這個問題前段時間解決了,但是為了自學/練習而這樣做),其中輸出明顯受到年份和月份的影響。
原始日期時間數據提供年/月/日/小時信息,我覺得年和月可能是唯一必要的數據。因此,我目前已經修改了該功能,使數據僅由年和月表示(例如 2016 年 3 月將是 201603),並針對由年/月對組成的修改時間變量繪製每個結果。
正如您在此處看到的,第一個結果有一些輕微的季節性波動,而第三個和第四個結果有明顯的季節性趨勢。另一方面,第二個結果在 2015 年 5 月 (201505) 之後急劇下降。
對於我的模型預測,我想以某種有意義的方式將時間作為變量合併。這裡最好的方法是什麼?我可以假設數據中最早的時間段等於 1 並每月增加 1 並將變量視為名義類別變量嗎?或者是其他東西?
謝謝
您希望保留輸入的周期性。一種方法是將日期時間變量分成四個變量:年、月、日和小時。然後,將這些(年份除外)變量中的每一個分解為兩部分。
您為這三個變量(即月、日、小時)中的每一個創建一個正弦和余弦面,這將保留這樣一個事實,即 24 小時比 21 小時更接近 0 小時,並且 12 月更接近月份1 到第 10 個月。
一個快速的谷歌搜索給了我一些關於如何做到這一點的鏈接:
- https://ianlondon.github.io/blog/encoding-cyclical-features-24hour-time/
- 神經網絡中日特徵的優化構建
- https://datascience.stackexchange.com/questions/5990/what-is-a-good-way-to-transform-cyclic-ordinal-attributes
- https://medium.com/towards-data-science/top-6-errors-novice-machine-learning-engineers-make-e82273d394db