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