時間延遲特徵與自迴歸模型

Python 的時間序列資料機器學習

Chris Holdgraf

Fellow, Berkeley Institute for Data Science

過去很有用

  • 時間序列常含有「跨時間點共享」的資訊。
  • 過去的資訊有助於預測未來。
  • 最能預測時間序列的特徵,往往是該序列先前的數值。
Python 的時間序列資料機器學習

關於平滑度與自我相關

  • 常見問題:這個時間序列有多「平滑」。
  • 也就是一個時間點與鄰近時間點的相關性(稱為自我相關)。
  • 自我相關的程度會影響你的模型。
Python 的時間序列資料機器學習

建立時間延遲特徵

  • 來看看如何用過去的數值作為輸入特徵建模。
  • 也可用來評估訊號的自我相關(以及其他分析)。
Python 的時間序列資料機器學習

用 Pandas 做時間位移

print(df)
         df 
    0   0.0
    1   1.0 
    2   2.0 
    3   3.0 
    4   4.0 
# 將 DataFrame/Series 往過去偏移 3 個索引值
print(df.shift(3))
         df
    0   NaN
    1   NaN
    2   NaN
    3   0.0
    4   1.0
Python 的時間序列資料機器學習

建立時間位移的 DataFrame

# data 是一個包含時間序列資料的 pandas Series
data = pd.Series(...)

# 偏移量
shifts = [0, 1, 2, 3, 4, 5, 6, 7]

# 建立時間位移資料的字典
many_shifts = {'lag_{}'.format(ii): data.shift(ii) for ii in shifts}

# 轉為 DataFrame
many_shifts = pd.DataFrame(many_shifts)
Python 的時間序列資料機器學習

用時間位移特徵擬合模型

# 使用這些輸入特徵來擬合模型
model = Ridge() 
model.fit(many_shifts, data)
Python 的時間序列資料機器學習

解讀自迴歸模型的係數

# 視覺化已擬合模型的係數
fig, ax = plt.subplots()
ax.bar(many_shifts.columns, model.coef_)
ax.set(xlabel='Coefficient name', ylabel='Coefficient value')

# 設定格式讓圖表更清楚
plt.setp(ax.get_xticklabels(), rotation=45, horizontalalignment='right')
Python 的時間序列資料機器學習

粗糙訊號的係數視覺化

Python 的時間序列資料機器學習

平滑訊號的係數視覺化

Python 的時間序列資料機器學習

一起來練習吧!

Python 的時間序列資料機器學習

Preparing Video For Download...