【统计学习方法】决策树
何為決策樹?
決策樹定義
決策樹是一種用于分類的樹結構。如圖所示,它由結點(node)和有向邊(directed edge)組成,結點包括內部結點(internal node)和葉結點(leaf node),內部結點表示一個特征或屬性,葉結點表示一個類。
決策樹示意圖
如何分類?
那么決策樹如何進行分類呢?首先,從根結點開始,根據待分類數據的某一特征值對其進行劃分,分配到相應子結點,因此,每一個子結點都對應了該特征的一個取值。像這樣遞歸進行,直到到達葉結點。
決策樹的特征選擇
上一部分提到決策樹根據特征值對數據進行劃分,不同的特征選擇方式可以得到不同的決策樹,而我們想得到的決策樹,它不僅能很好地擬合訓練數據,還有較好的泛化能力。
那么該怎么選特征呢?一個基本準則是,每一步都遞歸地選擇最優特征,可以對各個子數據集達到最后的分類結果。
如何評價特征的優劣呢?這就不得不提到信息增益和信息增益比這兩個概念了。
熵&條件熵
說到信息增益,不得不先提一提熵(entropy)和條件熵(conditional entropy)。
熵是表示隨機變量不確定性的度量,定義如下:
條件熵表示在已知隨機變量X的條件下,隨機變量Y的不確定性,定義如下:
當熵和條件熵中的概率由數據估計得到時,就分別稱為經驗熵(empirical entropy)和經驗條件熵(empirical conditional entropy)。
信息增益&信息增益比
信息增益(information gain)表示得知特征X的信息而使得類Y的信息的不確定性減少程度。定義如下:
回到原來的問題,該如何評價特征的優劣呢?我們就用信息增益!在這里,信息增益表示了由于特征A而使得對數據集D的分類的不確定性減少的程度。信息增益大的特征就具有更強的分類能力啦~
具體如何根據信息增益選擇特征呢?用這個方法:對訓練數據集(或子集)D,計算其每個特征的信息增益,比較它們的大小,選擇信息增益最大的特征。
如何計算信息增益呢?下面給出信息增益的算法:
了解了信息增益后,信息增益比就很好理解了,信息增益比是信息增益關于特征的值的熵之比,具體如下:
決策樹生成算法
ID3算法
ID3算法的基本思想是從根結點開始,在每一個結點上都計算所有可能的特征的信息增益,然后選出信息增益最大的一個特征作為該結點的特征;然后不斷遞歸進行,構建決策樹。也就是說 ,ID3算法每一步都選擇信息增益最大的特征作為結點的分類特征,構建子結點。
具體算法步驟如下:
C4.5算法
C4.5算法與ID3算法相似,區別在于,C4.5算法用信息增益比來選擇特征。
具體算法步驟如下:
決策樹剪枝算法
按以上生成方式遞歸地產生決策樹容易過擬合,即在訓練集上分類效果非常好,但是泛化能力不強,對于其他數據集分類效果并沒有那么準確。其原因是,構建出的決策樹往往過于復雜,那么解決這個問題的辦法就是通過剪枝算法降低樹結構的復雜度。
剪枝是一個從已生成的樹上裁掉一些子樹或者葉結點,并將其根結點或父節點作為新的葉結點的過程。
損失函數
剪枝往往通過最小化整體損失函數(loss function)或代價函數(cost function)來實現。損失函數具體定義如下:
C(T)表示模型預測誤差,衡量了擬合程度;|T|表示模型復雜度。損失函數制衡了擬合程度和模型復雜度之間的平衡。
剪枝算法
剪枝的總體目標是令損失函數最小化,因此剪枝算法的基本思想是如果剪枝回縮后損失的函數值比不剪枝更小,那么就剪枝回縮,不然不剪枝。
具體算法為:
分類樹與回歸樹CART
分類樹與回歸樹(classification and regression tree, CART)模型是應用廣泛的決策樹學習方法,既可用于分類,也可用于回歸。
CART算法由兩步組成:
(1)決策樹生成:基于訓練數據生成決策樹,決策樹要盡可能大,擬合度盡可能高
(2)決策樹剪枝:用驗證數據集對已生成的樹進行剪枝并選擇最優子樹,剪枝的標準為令損失函數最小。
接下來我們分別來看看CART生成算法和剪枝算法。
CART生成算法
對于回歸樹,用平方誤差最小化準則;對于分類樹,用基尼指數(Gini index)最小化準則,進行特征選擇,遞歸地構建決策樹。
回歸樹的生成
在輸出變量Y為連續變量時,我們選用回歸樹。
給定訓練數據集為D=(x1,y1),(x2,y2),…,(xN,yN)D=(x1,y1),(x2,y2),…,(xN,yN)
假設輸入空間被劃分為m個單元R1,R2,…,RmR1,R2,…,Rm,每個單元的輸出值為cmcm,II為指示函數,回歸樹模型可表示為
f(x)=∑m=1McmI(x∈Rm)f(x)=∑m=1McmI(x∈Rm)
訓練誤差為∑xi∈Rm(y?f(xi))2∑xi∈Rm(y?f(xi))2
cmcm最優值為 cm^=ave(yi|xi∈Rm)cm^=ave(yi|xi∈Rm)
如何對輸入空間進行劃分呢?采用的辦法是,遍歷所有特征和特征的取值,找到最優切分變量x(j)x(j)和最優切分點ss,滿足
minj,s[minc1Loss(yi,c1)2+minc2Loss(yi,c2)2]minj,s[minc1Loss(yi,c1)2+minc2Loss(yi,c2)2]
其中
c2^=ave(yi|xi∈R2(j,s))c2^=ave(yi|xi∈R2(j,s))
對于每一個區域都迭代地重復上述劃分過程,直到滿足停止條件,就生成了一棵回歸樹。
具體算法步驟為:
分類樹的生成
分類樹用基尼指數來選擇最優特征,同時確定最優二值切分點。其中,基尼指數定義如下:
分類樹的算法步驟與回歸樹算法步驟相似,只不過分類樹用基尼指數來選擇最優特征和確定切分點。具體算法步驟如下:
CART剪枝算法
CART剪枝算法由兩步構成:
(1)從決策樹T0T0底端不斷剪枝,直到到達根結點,得到子樹序列T0,T1,…,TnT0,T1,…,Tn
(2)通過交叉驗證法,在獨立的驗證集上對子樹序列進行測試,從中選擇最優子樹TαTα。
具體剪枝算法為:
參考:
李航 - 統計學習方法
總結
以上是生活随笔為你收集整理的【统计学习方法】决策树的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Leetcode | easy】有效的
- 下一篇: Jupyter notebook 运行环