2019年3月21日 星期四

[ML] 機器學習初學觀念-Decision Tree



常用於資料分類問題, 也可以進行regression, 雖然決策樹很容易理解, 但高維度或複雜的資料的結果並非準確, 後續有很多改良的決策樹出現可以使用, 例如隨機森林......等等



原理:
計算label的純度, 再分別計算各個feature的純度, 使用與label純度差異最大(information gain最大)的feature當成root切割資料集, 表示分之前的與分之後的亂度哪一個減少最多,重複這個步驟, 不斷尋找feature, 以此類推下去

純度:
混亂程度, 計算數值越高表示越亂, 大都是同一類別表示越純, 類別平均出現表示越亂

純度計算:

information gain計算演算法, Gini impurty and Entropy, 測試結果兩種方法大同小異, 依照實際問題可能有特定的計算方式




Information gain問題:
會去選擇出現次數最多的當root, 因為例如ID去切割 , 一定是最純, 所以會使用加入gain ratio計算, 避免被ID影響







pruning 限制分支:
決策樹很容易overfitting, 必須進行限制分支, post-pruning, 樹長完後再來觀察如何限制, 計算大但是效果較好

關找出關鍵的feature:
可以透過哪些feature被使用最多次, 來找出影響結果最強的feature, scikit-learn使用feature important找出feature並排序

分類演算法比較:
KNN訓練快預測慢
logistic regression在小樣本中速度較快
Decision Tree 比logistic regression略慢, 因為一個feature在每一層可能出現很多次EX root有身高>160, 下一層身高>170

視覺化:
可以使用下列套件將樹畫出來


ISSUE

  • 當遇到多樣(mutiple)與重複高(overlapping)的資料很容易overfitting, 建議使用Ensemble Learning, 如隨機森林......
  • 結果不容易被解釋
  • 隨機森林可以平行化處理, 速度快


Ref:
  • 台灣人工智慧學校





沒有留言:

張貼留言