在前面我們學習了KNN是一種基本的分類和迴歸方法。今天我們繼續來學習另一個也能進行分類和迴歸的方法——決策樹(Decision Tree)。那麼對此,決策樹到底是如何做出決策的呢?請接下來往下看——
思維導圖(內容概覽)
衡量標準
對於一個統計學習方法,我們需要從模型+決策+算法逐步入手。但是在認識模型之前,特徵的選取又是顯得特別重要,在決策樹法中,存在一些比較重要的概念,即選取特徵的標準。
-
評估離散程度常用的有方差、熵、基尼指數
- 方差:適用於連續隨機變量,數值有實際意義。
- 熵:適用於離散隨機變量,數值沒有實際意義。
- 基尼指數:適用於離散隨機變量,數值沒有實際意義。
-
熵:用於表示隨機變量的不確定(混亂)程度,記作
H(X)=−i=1∑npilogpi
-
條件熵:在一直隨機變量X的條件下,隨機變量Y的不確定性(混亂程度)記作
H(Y∣X)=i=1∑npiH(Y∣X=xi)
-
信息增益:在得知特徵X的信息而使得類Y的信息的不確定性減少程度,記作
g(D,A)=H(D)−H(D∣A)
-
信息增益比:
-
信息增益的缺陷:偏向於選擇取值較多的特徵。
-
概念:對於A特徵的信息增益比,就是信息增益與訓練數據集關於特徵A的熵之比,記作
gr(D,A)=HA(D)g(D,A)
-
基尼指數(K爲類別數量,Pk爲屬於k類的概率)定義爲:
Gini(p)=k=1∑Kpk(1−pk)=1−k=1∑Kpk2
-
在特徵A的條件下,集合D的基尼指數定義爲
Gini(D,A)=D∣D1∣Gini(D1)+DD2Gini(D2)
決策樹模型
定義:分類決策樹模型是一種描述對實例進行分類的樹形結構。決策樹由節點和有向邊組成,結點有兩種類型:內部結點和葉結點。內部結點表示一個特徵或屬性,葉結點表示一個類。用決策樹分類,從根結點開始,對實例的某一個特徵進行測試,根據測試結果,將實例分配到其子結點;這時,每一個子結點對應着該特徵的一個取值。如此遞歸下去,直至到達葉結點。最後將所有實例進行分類。
決策樹模型示意圖:
損失函數和剪枝(Pruning)策略
在決策模型中,會存在一個很重要的步驟,那就是剪枝,剪枝能決定最後的決策樹的樣子。
當遇到一系列的連續值,這是該怎麼辦?此時需要將連續值進行離散化,也即是需要選取連續值的分界點。
- 剪枝的原因:決策樹的過擬合風險過大時,每個葉子節點就分成了一個數據,結果不太如意。
- 剪枝策略:預剪枝,後剪枝。
-
- 預剪枝:邊建立決策樹邊進行剪枝的操作(更加實用),比如在選擇若干個特徵進行先構造決策樹。限制深度,葉子節點個數、葉子樣本點數、信息增益量等;
- 後剪枝:邊建立完決策樹後進行剪枝操作。通過一定的衡量標準,葉子節點越多,損失越大。
DT模型是以極小化決策樹的整體損失函數或代價函數,可定義如下:
Cα(T)=C(T)+α∗∣T(leaf)∣
- 前半部分表示對訓練數據的擬合程度。
- 後半部分表現模型複雜程度。
- 用於對樹規模的懲罰程度,取值爲0是表示只考慮模型與訓練數據的擬合程度,不考慮模型複雜度,取值正無窮時則剛好相反。
決策樹的生成算法
-
如何切分特徵
-
- 根節點的選擇應該用哪一個特徵?該如何切分?
- 根節點的目標是通過一種衡量標準,來計算通過不同特徵進行分支選擇後的分類的情況,找出最好的那個作爲根節點,以此類推。
-
類別:每一種算法不同,衡量標準也不相同。
-
ID3算法
ID3算法的核心是在決策樹各個節點上運用信息增益準則選擇特徵,遞歸構建決策樹。
算法描述:
輸入:訓練數據集D,特徵集A,閾值ε;輸出:決策樹T.(1)若D中所有實例屬於同一個類CK,則T爲單節點樹,並將CK作爲該節點的類標記,返回T;(2)若A=ϕ,則T爲單節點樹,並將D中實例數最大的類CK作爲該節點的類標記,返回T.(3)否則,計算A中特徵對D的信息增益,選擇信息增益最大的特徵Ag;(4)如果Ag的信息增益小於閾值ε,則置T爲單節點樹,並將D中實例中最大的類作爲該節點的類標記,返回T;(5)否則,對Ag每一個可能值ai,依Ag=ai將D分割爲若幹個非空子集Di,將Di中實例數最大的類爲該節點的標記,構建子節點,由結點以及子節點構成樹T,返回T;(6)對第i個子節點,以Di爲訓練集,以A−{Ag}爲特徵集,遞歸地調用(1) (5),得到子樹Ti,返回T。
C4.5算法
C4.5算法和ID3算法相似,並對ID3算法做了改進。其核心是採用信息增益比來選取特徵。
輸入:訓練數據集D,特徵集A,閾值ε;輸出:決策樹T.(1)若D中所有實例屬於同一個類CK,則T爲單節點樹,並將CK作爲該節點的類標記,返回T;(2)若A=ϕ,則T爲單節點樹,並將D中實例數最大的類CK作爲該節點的類標記,返回T.(3)否則,計算A中特徵對D的信息增益比,選擇信息增益比最大的特徵Ag;(4)如果Ag的信息增益小於閾值ε,則置T爲單節點樹,並將D中實例中最大的類作爲該節點的類標記,返回T;(5)否則,對Ag每一個可能值ai,依Ag=ai將D分割爲若幹個非空子集Di,將Di中實例數最大的類爲該節點的標記,構建子節點,由結點以及子節點構成樹T,返回T;(6)對第i個子節點,以Di爲訓練集,以A−{Ag}爲特徵集,遞歸地調用(1) (5),得到子樹Ti,返回T。
CART算法
CART算法包含兩步:決策樹生成和決策樹剪枝。
CART生成
決策樹生成就是遞歸構建二叉決策樹的過程。對迴歸樹使用平方誤差最小化準則,對分類書用基尼指數(GINI INDEX)組笑話準則,進行特徵選擇,生成二叉樹。
-
迴歸樹的生成
通常使用最小二乘迴歸樹生成算法進行生成迴歸樹。
輸入:訓練數據集D;輸出:回歸樹f(x).在訓練集所在的輸入空間中,遞歸地將每個區域劃分爲兩個子區域並決定每個子區域上的輸出值,構建決策樹:(1)選擇最優的切分變量j與切分點s,求解minj,s[mincjxj∈R1(j,s)∑(yi−ci)2+mincjxj∈R2(j,s)∑(yi−ci)2],遍歷j,對j的切分點s,選擇最小的(j,s);(2)用選定的對(j,s)劃分區域並決定相應的輸出值:R1(j,s)={x∣s(j)≤s},R2(j,s)={x∣s(j)>s}cm^=Nm1∑yi,x∈Rm,m=1,2(3)繼續對兩個子區域調用步驟(1),(2),直至滿足條件;(4)將輸入空間劃分成M個區域R1,R2,R3...RM,生成決策樹。f(x)=m=1∑Mcm^I(x∈Rm)
-
分類樹的生成
分類樹用基尼指數選擇最優特徵,同時決定該特徵的最優二值切分點。
CART生成算法描述:
輸入:訓練數據集D,停止計算的條件;輸出:CART決策樹.根據訓練數據集,從根結點開始,遞歸地對每一個結點進行如下操作,構建決策樹:(1)設結點地訓練集爲D,計算現有特徵對該數據集的基尼指數。此時,對每一個特徵A,對可能取得每一個值a,根據樣本點對A=a得測試爲"是"或"否"將D分割成D1和D2,計算A=a得基尼指數。(2)在所有可能得特徵A和可能得切分點a中,選擇最小的基尼指數得特徵以及對應的切分點。由此,從現結點生成兩個子結點,將訓練集依特徵分配到兩個子結點中去。(3)對兩個子節點遞歸調用(1),(2),直至滿足條件;(4)生成CART決策樹。