2022年1月11日 星期二

Machine Learning - 網路心得整理

Introduction

這篇文章主要是整理網路上一些對於機器學習使用到方法的觀點

網址 :XXX
程式碼:XXX


Dropout

Dropout簡單說就是在每次神經網路向前傳播的時候,讓某個神經元以機率 p 停止運作,這種做法可以讓模型的泛化性更強,換句話說,就是提高各個神經元間的獨立性,使得結果不會嚴重地受某些區域性的特徵影響

而 Dropout 在訓練過程中實際上發生的是訓練神經網路的某個子集,且由於神經元的權重是來自原始的神經網路,訓練最終得出的權重可以被認為是所有子集神經網路權重的平均值。


From https://medium.com/deep-learning-demystified/generalization-in-neural-networks-7765ee42ac23


Upsampling

通常處理不均衡的資料時有幾種作法,Upsampling, Undersampling 跟 Weighting...等,主流作法通常都是第一種,但升採樣的做法通常為群集內插值,這意味著Feature的分佈會影響升採樣的結果(如下圖,黃點升採樣出來的data 都在黃點之間)

Anomaly detection

異常檢測的方式有很多種,以下就看到的文章一一介紹

  • One-class SVM
    這是機器學習中經典的單類別演算法,通常用在positive case幾乎不存在,亦即資料中僅有一個類別的狀況,其算法簡單來說就是透過 kernel function在高維度尋求一個超平面盡可能將所有 sample 包住(如下圖),只是kernel 所需的計算量蠻龐大的,需斟酌使用。
    • Example
      from sklearn.svm import OneClassSVM
      train, test = train_test_split(data, test_size=.2)
      train_normal = train[train['y']==0]
      train_outliers = train[train['y']==1]
      outlier_prop = len (train_outliers) / len(train_normal)
      svm = OneClassSVM(kernel='rbf', nu=outlier_prop, gamma=0.000001)
      svm.fit(train_normal[['x1','x2',...]])

      x = test['x1']
      y = test['x2']
      plt.scatter(x, y, alpha=0.7, c=test['y'])
      plt.xlabel('x1')
      plt.ylabel('x2')

      y_pred = svm.predict(test[['x1','x4','x5']])
      colors = np.array(['#377eb8' , '#ff7f00'])
      plt.scatter(x, y, alpha=0.7, c=colors[(y_pred + 1) // 2])
      plt.xlabel('x1')
      plt.ylabel('x2')

  • Isolation forest
    隔離森林的構造方式和隨機森林類似,透過隨機抽樣資料集、隨機選定特徵對資料進行分割,直到每個節點只剩下一筆資料或是多筆相同的資料。
    其概念在於異常資料相較於正常資料更容易在算法初期被切割出來,透過計算資料在各顆樹木的深度來判斷資料是否為異常值。
    但要注意的是由於算法特性,IF不適用於高維度資料與偵測局部的異常值。
    From https://www.researchgate.net/figure/Overview-of-the-isolation-forest-method-Light-green-circles-represent-common-normal_fig3_341629782

     
  • Robust Random Cut Forest
    穩健的隨機森林砍伐算法改良自隔離森林,透過水塘抽樣的概念讓算法得以將時序間的關係納入考量,並計算Streaming data對於樹木複雜度變化來衡量資料是否為異常值。
    From http://proceedings.mlr.press/v48/guha16.pdf



  • O...

Robust Random Cut Forest

123

沒有留言:

張貼留言