關於決策樹和隨機森林的學習


申明:此文為學習記錄過程

一:概念

        決策樹是一種非線性有監督分類模型,隨機森林是一種非線性有監督分類模型。線性分類模型比如說邏輯回歸,可能會存在不可分問題,但是非線性分類就不存在。決策樹是機器學習中最接近人類思考問題的過程的一種算法,通過若干個節點,對特征進行提問並分類(可以是二分類也可以使多分類),直至最后生成葉節點(也就是只剩下一種屬性)。

        決策樹是一種簡單但是廣泛使用的分類器。通過訓練數據構建決策樹,可以高效的對未知的數據進行分類。決策數有兩大優點:1)決策樹模型可以讀性好,具有描述性,有助於人工分析;2)效率高,決策樹只需要一次構建,反復使用,每一次預測的最大計算次數不超過決策樹的深度。

        信息熵:熵代表信息的不確定性,信息的不確定性越大,熵越大;比如“明天太陽從東方升起”這一句話代表的信息我們可以認為為0;因為太陽從東方升起是個特定的規律,我們可以把這個事件的信息熵約等於0;說白了,信息熵和事件發生的概率成反比:數學上把信息熵定義如下:H(X)=H(P1,P2,…,Pn)=-∑P(xi)logP(xi)

        互信息:指的是兩個隨機變量之間的關聯程度,即給定一個隨機變量后,另一個隨機變量不確定性的削弱程度,因而互信息取值最小為0,意味着給定一個隨機變量對確定一另一個隨機變量沒有關系,最大取值為隨機變量的熵,意味着給定一個隨機變量,能完全消除另一個隨機變量的不確定性

二、決策樹3種算法

1.信息增益:ID3

定義為:對於特征A的信息增益為:g(D,A)=H(D)-H(D|A),信息增益就是給定訓練集D時,特征A和訓練集D的互信息I(D,A).選取信息增益最大的特征作為分支的節點.(后面有舉例)

其中,條件熵H(D|A)的計算公式如下:

信息增益的缺點:對數目較多的屬性有偏好,且生成額決策樹層次多,深度淺,為改善這些問題,提出方法二.

2.信息增益率:C4.5

其等於信息增益/屬性A的熵

信息增益率的缺點:對數目較少的屬性有偏好,后又有方法三.

3.CART基尼指數:

其計算公式如下:

Gini系數可以理解為y=-lnx在x=1處的一階展開.

總結之,一個屬性的信息增益(率)/gini指數越大,表明屬性對樣本的熵較少的程度越大,那么這個屬性使得樣本從不確定性變為確定性的能力越強,分支時選擇該屬性作為判斷模塊使得決策樹生成的越快.

三、舉例

看了一遍概念后,我們先從一個簡單的案例開始,如下圖我們樣本:

對於上面的樣本數據,根據不同特征值我們最后是選擇是否約會,我們先自定義的一個決策樹,決策樹如下圖所示:

對於上圖中的決策樹,有個疑問,就是為什么第一個選擇是“長相”這個特征,我選擇“收入”特征作為第一分類的標准可以嘛?

現在我們就把信息熵運用到決策樹特征選擇上,對於選擇哪個特征我們按照這個規則進行“哪個特征能使信息的確定性最大我們就選擇哪個特征”;比如上圖的案例中;

第一步:假設約會去或不去的的事件為Y,其信息熵為H(Y);

第二步:假設給定特征的條件下,其條件信息熵分別為H(Y|長相),H(Y|收入),H(Y|身高)

第三步:分別計算信息增益(互信息):G(Y,長相) = I(Y,長相) = H(Y)-H(Y|長相) 、G(Y,) = I(Y,長相) = H(Y)-H(Y|長相)等

第四部:選擇信息增益最大的特征作為分類特征;因為增益信息大的特征意味着給定這個特征,能很大的消除去約會還是不約會的不確定性;

第五步:迭代選擇特征即可;

按以上就解決了決策樹的分類特征選擇問題,上面的這種方法就是ID3方法,當然還是別的方法如 C4.5;等;

四、決策樹剪枝

1. 完整樹的問題

決策樹對訓練樣本具有很好的分類能力。而一棵對樣本完全分類的決策樹(完整樹),對未知的測試數據未必有很好的預測能力,泛化能力較差,容易出現過擬合現象。

完整樹:決策樹T的每個葉子節點的樣本集合中的樣本都為同一類型。

過擬合會導致構建出過於復雜的決策樹,為解決這個問題,可以通過剪枝的方法來簡化已生成的決策樹,即將某個划分屬性的節點的分支減掉,並將該節點作為一個某個決策結果的葉子節點(對應的決策結果可采用占多數的樣本標記)。那怎么判斷某個划分屬性的節點是否需要剪枝呢?(剪枝在於減少葉子節點的數量)

2. 剪枝的算法

因而,我們需要設計一個分類誤差評估函數,然后通過極小化決策樹整體的損失函數實現剪枝。

設決策樹 T 有 n 個葉子節點,設第t個葉子節點的樣本集合Dt有Nt個樣本,這些樣本的標記類別不一定相同,假設樣本集合Dt中的樣本有k種標記類別,第i種類別的樣本有Nti個。

那么,第t個葉子節點的樣本集合的經驗熵 這里寫圖片描述定義為:這里寫圖片描述 。

可以看出,當第t個葉子節點的樣本集合只有一種標記類型時,經驗熵為0。

下面給出我們的決策樹 T 的損失函數的定義:這里寫圖片描述。其中n為葉子節點數,也可以用|T|來表示,α為經驗值參數(α≥0)。

C(T)表示決策樹對訓練數據的預測誤差,參數α控制兩者之間的影響,α越大,要求模型越簡單,α=0表示不考慮模型的復雜度(即可以產生較多的葉子節點)。

剪枝的過程,就是當α確定時,選擇損失函數最小的模型。分類越細,葉子節點的經驗熵就越小,C(T)越小,但是由於分類越細會導致葉子節點的數目會很多,α|T|(或αn)越大。損失函數反映的是兩者的平衡。

決策樹的生成過程只考慮了樣本集合分類的純度,只考慮更好地擬合訓練數據,而剪枝過程在於減小整體的復雜度。

決策樹的剪枝算法:固定某個經驗值α,對划分屬性的結點進行剪枝預估,若剪枝后,決策樹損失函數減小了,則減掉該結點的葉節點,將該結點作為新的葉節點,該結點對應的決策結果可以為其樣本集合中占多數的樣本標記。(或構造不同的α值得到一些備選樹,通過交叉驗證的方法得到最優樹)

五、決策樹的過擬合解決辦法

若決策樹的度過深的話會出現過擬合現象,對於決策樹的過擬合有二個方案:

   1:剪枝

先剪枝和后剪紙(可以在構建決策樹的時候通過指定深度,每個葉子的樣本數來達到剪枝的作用)

引入評價函數(損失函數):所有葉節點的加權求熵,其值越小表明分類越精准,那么該決策樹分類覺越好.Nt是葉節點中樣本的個數.

剪枝方法之預剪枝:

從前往后生成樹的過程中,從樹根開始,逐一生成節點,比較其生成與不生成的C(T),在驗證集上選擇C(T)小的作為最終的數.

剪枝方法之后剪枝:

剪枝系數:

決策樹生成后,查找剪枝系數最小的節點,視為一顆決策樹,重復以上,知道只剩下一個節點,這樣得到多顆決策樹,在驗證集上計算損失函數最小的那棵樹作為最終的決策樹.

   2:隨機森林

構建大量的決策樹組成森林來防止過擬合;雖然單個樹可能存在過擬合,但通過廣度的增加就會消除過擬合現象

隨機森林(Random forest):生成多顆決策樹,投票選舉的原則

引入兩種方法:bootstrapping(有放回的隨機抽取)和bagging(bootstrap aggragation)

bagging的方法如下:

隨機森林是在bagging上做了改進,計算過程如下:

注意:隨機森林或者bagging是基於若干個弱分類器組成的基本分類器進行vote決定最終的分類的,基本分類器也可以選擇強分類器(如LR,SVM等),但可能因為強分類器某些特征太多明顯而不能被多個分類器的平均抹掉,不能很好達到過擬合的效果.

六、決策樹優缺點

優點:

->計算簡單,易理解,可解釋性強

->適合處理確實屬性的樣本,對樣本的類別要求不高(可以是數值,布爾,文本等混合樣本)

->能處理不相干特征

缺點:

->容易過擬合

->忽略了數據之間的相關性

->不支持在線學習,對新樣本,決策樹需要全部重建

參考資料:

1.決策樹、隨機森林簡單原理和實現

2.機器學習之決策樹(Decision Tree)&隨機森林(Random forest)

3.【機器學習】--決策樹和隨機森林

4.機器學習之決策樹和隨機森林及代碼示例


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM