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:
  • 台灣人工智慧學校





沒有留言:

張貼留言