决策树算法学习笔记(提升篇)
聲明:本文雖有部分自己理解成分,但是大部分摘自以下鏈接。
決策樹(decision tree)(三)——連續值處理
決策樹參數講解+實例
數據挖掘十大算法
C4.5算法的改進:
用信息增益率來選擇屬性。
在樹構造過程中進行剪枝,在構造決策樹的時候,那些掛著幾個元素的節點,不考慮最好,不然容易導致overfitting。
對非離散數據也能處理。
能夠對不完整數據進行處理。
修剪枝葉
原因:避免產生過擬合
- 前剪枝葉:在構造決策樹的同時進行剪枝。在決策樹構建中,如果無法進一步降低信息墑的情況下就會停止創建分支。為了避免過擬合,可以設定一個閥值,信息墑見效的數量小于這個閥值,即是還可以繼續降低熵也停止繼續創建分支。這種方法就是前剪枝。構造樹時,即限定增加該節點時增加的熵是否會低于閾值來判斷是否增加這個節點
- 后剪枝:后剪枝是指決策樹構造完成后進行剪枝。剪枝的過程是對擁有同樣符節點的一組節點進行檢查,判斷如果將其合并,信息墑的增加量是否小于某一閥值。如果小于閥值即可合并分支。成功構建樹后,通過檢查,假設合并后的信息增量是否小于某閾值(其純度應該是減小的,可以理解成不太亂)
- 后剪枝的算法有很多種,其中常見的一種稱為減低錯誤率剪枝法(Reduced-Errorpruning)。其思路是自底向上,從已經構建好的完全決策樹中找出一個子樹,然后用子樹的根節點代替這顆子樹,作為新的葉子節點。葉子節點所表示的類別通過大多數原則確定,這樣就構建出一個簡化版決策樹。然后使用交叉驗證數據集來測試簡化版本的決策樹,看看其錯誤率是不是降低了。如果錯誤率降低了,則可以用這個簡化版的決策樹來代替完全決策樹,否則還采用原來的決策樹。通過遍歷所有的子樹,直到針對交叉驗證數據集無法進一步降低錯誤率為止。
連續值處理
**連續值處理過程口述總結:(二分法,找分界點)
- 先通過迭代方式找到會使得分割后信息增益最大的分界點
- 之后以該點為節點后續和前面一樣**
調參注意事項
當樣本少數量但是樣本特征非常多的時候,決策樹很容易過擬合,一般來說,樣本數比特征數多一些會比較容易建立健壯的模型
如果樣本數量少但是樣本特征非常多,在擬合決策樹模型前,推薦先做維度規約,比如主成分分析(PCA),特征選擇(Losso)或者獨立成分分析(ICA)。這樣特征的維度會大大減小。再來擬合決策樹模型效果會好。
推薦多用決策樹的可視化,同時先限制決策樹的深度(比如最多3層),這樣可以先觀察下生成的決策樹里數據的初步擬合情況,然后再決定是否要增加深度。
在訓練模型先,注意觀察樣本的類別情況(主要指分類樹),如果類別分布非常不均勻,就要考慮用class_weight來限制模型過于偏向樣本多的類別。
決策樹的數組使用的是numpy的float32類型,如果訓練數據不是這樣的格式,算法會先做copy再運行。
如果輸入的樣本矩陣是稀疏的,推薦在擬合前調用csc_matrix稀疏化,在預測前調用csr_matrix稀疏化。
總結
以上是生活随笔為你收集整理的决策树算法学习笔记(提升篇)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言函数手册:c语言库函数大全|C语言
- 下一篇: C库函数手册