天天看點

算法梳理(三)決策樹算法梳理1. 資訊論基礎(熵 聯合熵 條件熵 資訊增益 基尼不純度)2.決策樹的不同分類算法(ID3算法、C4.5、CART分類樹)的原理及應用場景3. 回歸樹原理4. 決策樹防止過拟合手段5. 模型評估6. sklearn參數詳解,Python繪制決策樹

目錄

1. 資訊論基礎(熵 聯合熵 條件熵 資訊增益 基尼不純度)

2.決策樹的不同分類算法(ID3算法、C4.5、CART分類樹)的原理及應用場景

3. 回歸樹原理

4. 決策樹防止過拟合手段

5. 模型評估

6. sklearn參數詳解,Python繪制決策樹

1. 資訊論基礎(熵 聯合熵 條件熵 資訊增益 基尼不純度)

熵:資訊是很抽象的概念,一直都無法估計資訊量,直到1948年,香農提出了“資訊熵”的概念,指出了“資訊是用來消除随機不确定性的東西”,解決了對資訊的量化度量問題。

熵是用來衡量一個系統混論程度的實體量,代表一個系統中蘊含多少資訊量,資訊量越大表明一個系統不确定性就越大,就存在越多的可能性。

聯合熵:兩個随機變量X,Y的聯合分布,可以形成聯合熵(Joint Entropy),用H(X, Y)表示。即:H(X, Y) = -Σp(x, y) lnp(x, y)

條件熵:H(X|Y)

資訊增益:

劃分前樣本集合D的熵是一定的 ,entroy(前),使用某個特征A劃分資料集D,計算劃分後的資料子集的熵 entroy(後)

                                   資訊增益 =  entroy(前) -  entroy(後)

資訊增益比:資訊增益比 = 懲罰參數 * 資訊增益

基尼不純度:基尼指數(基尼不純度)= 樣本被選中的機率 * 樣本被分錯的機率

2.決策樹的不同分類算法(ID3算法、C4.5、CART分類樹)的原理及應用場景

ID3算法

ID3由Ross Quinlan在1986年提出。ID3決策樹可以有多個分支,但是不能處理特征值為連續的情況。決策樹是一種貪心算法,每次選取的分割資料的特征都是目前的最佳選擇,并不關心是否達到最優。在ID3中,每次根據“最大資訊熵增益”選取目前最佳的特征來分割資料,并按照該特征的所有取值來切分,也就是說如果一個特征有4種取值,資料将被切分4份,一旦按某特征切分後,該特征在之後的算法執行中,将不再起作用,是以有觀點認為這種切分方式過于迅速。ID3算法十分簡單,核心是根據“最大資訊熵增益”原則選擇劃分目前資料集的最好特征,資訊熵是資訊論裡面的概念,是資訊的度量方式,不确定度越大或者說越混亂,熵就越大。在建立決策樹的過程中,根據特征屬性劃分資料,使得原本“混亂”的資料的熵(混亂度)減少,按照不同特征劃分資料熵減少的程度會不一樣。在ID3中選擇熵減少程度最大的特征來劃分資料(貪心),也就是“最大資訊熵增益”原則。下面是計算公式,建議看連結計算資訊上增益的執行個體。

算法梳理(三)決策樹算法梳理1. 資訊論基礎(熵 聯合熵 條件熵 資訊增益 基尼不純度)2.決策樹的不同分類算法(ID3算法、C4.5、CART分類樹)的原理及應用場景3. 回歸樹原理4. 決策樹防止過拟合手段5. 模型評估6. sklearn參數詳解,Python繪制決策樹

C4.5算法

C4.5是Ross Quinlan在1993年在ID3的基礎上改進而提出的。.ID3采用的資訊增益度量存在一個缺點,它一般會優先選擇有較多屬性值的Feature,因為屬性值多的Feature會有相對較大的資訊增益?(資訊增益反映的給定一個條件以後不确定性減少的程度,必然是分得越細的資料集确定性更高,也就是條件熵越小,資訊增益越大).為了避免這個不足C4.5中是用資訊增益比率(gain ratio)來作為選擇分支的準則。資訊增益比率通過引入一個被稱作分裂資訊(Split information)的項來懲罰取值較多的Feature。除此之外,C4.5還彌補了ID3中不能處理特征屬性值連續的問題。但是,對連續屬性值需要掃描排序,會使C4.5性能下降,

Cart樹

CART(Classification and Regression tree)分類回歸樹由L.Breiman,J.Friedman,R.Olshen和C.Stone于1984年提出。ID3中根據屬性值分割資料,之後該特征不會再起作用,這種快速切割的方式會影響算法的準确率。CART是一棵二叉樹,采用二進制切分法,每次把資料切成兩份,分别進入左子樹、右子樹。而且每個非葉子節點都有兩個孩子,是以CART的葉子節點比非葉子多1。相比ID3和C4.5,CART應用要多一些,既可以用于分類也可以用于回歸。CART分類時,使用基尼指數(Gini)來選擇最好的資料分割的特征,gini描述的是純度,與資訊熵的含義相似。CART中每一次疊代都會降低GINI系數。下圖顯示資訊熵增益的一半,Gini指數,分類誤差率三種評價名額非常接近。回歸時使用均方差作為loss function。基尼系數的計算與資訊熵增益的方式非常類似,公式如下

算法梳理(三)決策樹算法梳理1. 資訊論基礎(熵 聯合熵 條件熵 資訊增益 基尼不純度)2.決策樹的不同分類算法(ID3算法、C4.5、CART分類樹)的原理及應用場景3. 回歸樹原理4. 決策樹防止過拟合手段5. 模型評估6. sklearn參數詳解,Python繪制決策樹

3. 回歸樹原理

為成功建構以分段常數為葉節點的樹,需要度量出資料的一緻性。第3章使用樹進行分類,會在給定節點時計算資料的混亂度。那麼如何計算連續型數值的混亂度呢?在這裡,計算連續型數值的混亂度是非常簡單的。首先計算所有資料的均值,然後計算每條資料的值到均值的內插補點。為了對正負內插補點同等看待,一般使用絕對值或平方值來代替上述內插補點。上述做法有點類似于前面介紹過的統計學中常用的方差計算。唯一不同就是,方差是平方誤差的均值(均方差),而這裡需要的是平方誤差的總值(總方差)。總方差可以通過均方差乘以資料集中樣本點的個數來得到。

參考:

https://zhuanlan.zhihu.com/p/35351556

4. 決策樹防止過拟合手段

預剪枝:是在決策樹的生成過程中,對每個結點在劃分前先進行估計,若目前結點的劃分不能帶來決策樹泛化性能提升,則停止劃分即結束樹的建構并将目前節點标記為葉結點;

後剪枝:是先從訓練集生成一棵完整的決策樹,然後自底向上地對葉結點進行考察,若将該結點對應的子樹替換為葉結點能帶來決策樹泛化為性能提升,則将該子樹替換為葉結點。泛化性能的提升可以使用交叉驗證資料來檢查修剪的效果,通過使用交叉驗證資料,測試擴充節點是否會帶來改進。如果顯示會帶來改進,那麼我們可以繼續擴充該節點。但是,如果精度降低,則不應該擴充,節點應該轉換為葉節點。

參考:

https://www.zhihu.com/search?type=content&q=決策樹防止過拟合

5. 模型評估

分類樹:Accuracy、Precision、Recall、F1 score、ROC曲線和AUC、PR曲線

回歸樹:平均絕對誤差MAE、均方誤差MSE、R-squared

6. sklearn參數詳解,Python繪制決策樹

參考資料:

https://blog.csdn.net/AdamTu18/article/details/88201760

https://blog.csdn.net/qq_24313621/article/details/86722461

繼續閱讀