資料科學

資料科學初學者建模易犯的錯誤盤點

並非每次我們接觸到的資料,針對每一個預測標的,都有獨立、整理好的特徵值;尤其是在面對時間序列資料時,我們也希望捕捉預測標的,隨時間變化的特徵變化規律。本篇整理時間序列建模時,注意的重點:

(I) Scale-transformation

發生情境:
屬性之間的值域差異大,例如:有的欄位是 boolean (0, 1)、有的欄位是金額量 (ex: 0 ~ 10^8)。

如果不將多個屬性的數值 scale 到差不多的範圍,Loss 在收斂時會受到那些量級較大的屬性影響,可能無法輕鬆地往下尋找 global minimal;因為量級大的屬性,權重每更新一次所改變的量更大、量級小的屬性對權重的影響被縮小,本來 loss 可以順利下降的地方,因為快速變動的權重導致 overfit 情形。

解法:進行 Scaling

常見 Scaling Methods:
1. Standardization
2. MinMax Scaling
3. Robust Normalization

import numpy as np
from sklearn.preprocessing import StandardScaler, MinMaxScaler, RobustScaler
X = np.random.randint(5, size=(100, 5))
ss = StandardScaler()
ss.fit(X)
standard_X = ss.transform(X)
ms = MinMaxScaler()
ms.fit(X)
minmax_X = ms.transform(X)
rs = RobustScaler()
rs.fit(X)
robust_X = rs.transform(X)

(II) Padding

發生情境:
每一個預測標的在資料集中的時間序列長度不同。

解法:
1. 補齊到一樣長度
2. 把長度相近的一起 train:batch_size設定為那一群長度相近的個數
  缺點:速度慢、 等於 train 多個 LSTM

(III) Input Format

發生情境:
資料的維度和長度,要搭配對的模型參數

One-to-many

Many-to-one

Many-to-many

Many-to-many (同步)

%d 位部落客按了讚: