[TensorFlow Certification Day9] Time Series 初見面 Week1 (4hrs)


Posted by Kled on 2020-08-25

進入到了Time Series, 是推薦課程的最後一個課程, 也是考試項目的最後一個項目
本來誤以為NLP跟Time Series是同一個問題的我, 還好有看這個課程
Time Series可以處理的問題很廣泛, 而且也是很貼近實際生活中會遇到的問題
例如股票, 房價, 天氣, 地震, 心跳等等

第一周主要是介紹一些傳統的Sequence Model
也介紹了幾個Time Series的特點

  • Time Series可以用來做異常偵測, 預期下一個time 出現的值與現實差很大的時候, 就算是異常
  • Time Series主要分為趨勢性與季節性
  • 對於Time Series不一定是越多data越好, 有時候主要是要找出最佳的那個時間window
  • 盡量把test放在最後面的data, 因為最接近未來, 可以比較貼近未來, 保證該演算法對於未來是最準確
    #auto correlation
    #主要是看信號與自身延遲之間的相關性
    def autocorrelation(time, amplitude, seed=None):
      rnd = np.random.RandomState(seed)
      phi1 = 0.5
      phi2 = -0.1
      ar = rnd.randn(len(time) + 50)
      ar[:50] = 100
      for step in range(50, len(time) + 50):
          ar[step] += phi1 + ar[step-50]
          ar[step] += phi2 + ar[step-33]
      return ar[50:] + amplitude
    def autocorrelation(time, amplitude, seed=None):
      rnd = np.random.RandomState(seed)
      phi = 0.8
      ar = rnd.randn(len(time) + 1)
      for step in range(1, len(time) + 1):
          ar[step += phi + ar[step - 1]
      return ar[1:] + amplitude
    

績效評估指標

errors = forecasts - actual

  • mse = np.square(errors).mean()
  • rmse = np.sqrt(mse)
  • mae = np.abs(errors).mean() #這不會像mse對於較大的錯誤產生更大的懲罰
  • mape = np.abs(errors / x_valid).mean()

如果大錯誤比小錯誤危險, 那麼就要使用mse, 而不要採用mae, 但如果損失與誤差成正比, 那麼就採用mae

下面這個function倒是蠻出乎我意料的, keras有提供一個API讓大家可以直接送兩個array進去變成mse或是mae

#mae
mae = keras.metrics.mean_absolute_error(x_valid, naive_forcast).numpy()

naive forecast是直接拿前一個當成下一個來預測
常見的簡單預測方法是移動平均線
但他無法預測趨勢和季節性, 最終結果會比naive forecast還差
避免這種情況的一種做法是消除趨勢和季節性
用一種稱為差分的技術(differencing)
對於時間減去一個時間之前的值, 例如減去一年前, 或一個月前
但是這樣仍然對預測沒有太大幫助, 我們需要把過去每一年同時間相加起來看再取平均值


不得不說Time Series真的對我又更陌生了, 所以學習曲線又更久了
連Quiz也錯了4題
而且到了這個時候開始出現一點怠惰了, 但是49美元的coursera訂閱已經包下去了, 還是硬著頭皮先把time series的課程上完再說


#AI #Deep Learning #machine learning #TensorFlow #tensorFlow Certification #機器學習 #人工智慧 #深度學習







Related Posts

Day00:V8 bytecode 系列文介紹

Day00:V8 bytecode 系列文介紹

#1 擬訂計畫

#1 擬訂計畫

Angular 9 implement a hover effect with directives

Angular 9 implement a hover effect with directives


Comments