目錄
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中選擇熵減少程度最大的特征來劃分資料(貪心),也就是“最大資訊熵增益”原則。下面是計算公式,建議看連結計算資訊上增益的執行個體。
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。基尼系數的計算與資訊熵增益的方式非常類似,公式如下
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