時間序列(time serie)分析系列之時間序列特徵(feature)7
阿新 • • 發佈:2019-01-13
文章目錄
1.問題描述
時間序列資料作為一種典型的資料,常存在於各行各業。比如客流、車流、銷量、KPI指標等等。
如何對時序資料加以利用,比如做未來預測,交通擁堵分類等問題。在採用機器學習演算法之前,首先需要我們構建特徵。因為大多數時序資料都是單變數或者維度特別少,所以特徵的構建就比較重要。
筆者總結了幾種特徵,供大家參考,有更好的思路,非常歡迎提出來大家一起探討。
2.特徵構建
常見的時序資料格式如下:
時間time | 物件value |
---|---|
2019-01-01 | 1234 |
2019-01-02 | 2334 |
2019-01-03 | 4324 |
2019-01-04 | 5314 |
2019-01-05 | 5890 |
2019-01-06 | 6782 |
… | … |
對於上述這種單變數時序資料,如何構造特徵呢?也不外乎兩點,時間和物件:
- 時間特徵
- 平移特徵
- 視窗特徵
2.1時間特徵
因為時序資料是與時間相關聯的資料分佈於變化。因此可以提取出部分時間特徵:
- 每天中的小時hour
- 每個月中的天day
- 每年中的季度season
- 工作日/非工作日weekday/weekend
- 節假日是否holiday or not
如何提取相關特徵呢?在pandas模組中,可以很容易提取。
data["time"] = pd.to_datetime(data["time"])#設定時間格式
data.set_index('time',drop=True,inplace= True)#將時間列設定為索引
data["hour"] = data.index.hour#構建特徵
data["day"] = data.index.weekday
data["month"] = data.index.month
...
時間time | 物件value | day | month | weekday | … |
---|---|---|---|---|---|
2019-01-01 | 1234 | 1 | 1 | 1 | … |
2019-01-02 | 2334 | 2 | 1 | 2 | |
2019-01-03 | 4324 | 3 | 1 | 3 | |
2019-01-04 | 5314 | 4 | 1 | 4 | |
2019-01-05 | 5890 | 5 | 1 | 5 | |
2019-01-06 | 6782 | 6 | 1 | 6 | |
… | … | … | … | … |
可以通過時間序列的週期等特徵,提取相關的時間特徵,檢視重要性,最終保留相關特徵。
2.2平移特徵
平移特徵也成為lag特徵,通過將物件value進行平移操作,獲取的特徵。平移特徵可以將時序資料,轉化為監督問題。
時間time | 物件value | lag_1 | lag_2 |
---|---|---|---|
2019-01-01 | 1234 | NaN | NaN |
2019-01-02 | 2334 | 1234 | NaN |
2019-01-03 | 4324 | 2334 | 1234 |
2019-01-04 | 5314 | 4324 | 2334 |
2019-01-05 | 5890 | 5314 | 4324 |
2019-01-06 | 6782 | 5890 | 5314 |
從上表可以看出平移(lag)特徵的意義了吧,通過將物件value向前滑動,如lag_1,向前滑動1位,lag_2,向前滑動2位。
那如何選擇lag的大小呢?
這裡面還有沒確定的說法,按照筆者的嘗試,主要根據你的時序資料的特性進行嘗試。比如按照時序資料的週期,以及臨近時間的相關性等。
但如果lag的大小選擇過小的話,容易產生過擬合;選擇過大的話,容易產生欠擬合。可以嘗試半個週期大小上下浮動除錯。
2.3視窗特徵
除了上述特徵以外呢,還可以將時間和物件兩個特徵結合起來,構建新的特徵,基於視窗的特徵。
- 視窗內均值mean
- 視窗內最大值max
- 視窗內最小值min
時間time | 物件value | lag_1 | window_2_max |
---|---|---|---|
2019-01-01 | 1234 | NaN | NaN |
2019-01-02 | 2334 | 1234 | 1234 |
2019-01-03 | 4324 | 334 | 1234 |
2019-01-04 | 5314 | 1324 | 1324 |
2019-01-05 | 5890 | 2314 | 2314 |
2019-01-06 | 6782 | 1890 | 2314 |
注意這裡面數據與上面的圖表略有區別。window_2_max,window=2的最大值。其他的視窗特徵類似。
不一定所有特徵都有用,還需要嘗試,檢視特徵重要性。
視窗大小的選擇,也是需要嘗試的。
3.總結
上述內容,主要講述了時序資料,如何提取相關的特徵。希望在實踐中不斷的嘗試。如果有好的想法,歡迎留言。謝謝。