决策树相关知识小结
前言
本文是一篇關(guān)于決策樹方面知識的小結(jié),不包含具體的例子(想看例子推薦文獻(xiàn)[1]的第4章),主要總結(jié)了ID3、C4.5和CART樹三者的區(qū)別,剪枝處理,連續(xù)值和缺失值的處理。
決策樹的基本算法
決策樹的學(xué)習(xí)目的是為了產(chǎn)生一顆泛化能力強(qiáng),即處理未見示例能力強(qiáng)的決策樹,其基本流程遵循“分治”的策略,基本算法如下所示:
***********************輸入******************** 訓(xùn)練集 D={(x1,y1),(x2,y2),...,(xm,ym)}x中有 (col1,col2,...,colk) 共k組特征 每個col下有相應(yīng)的屬性值(a1,a2,...,ap)y中有 (l1,l2,...,ln) 共n種類標(biāo)簽 ***********************過程******************** if 數(shù)據(jù)集中的每個子項(xiàng)屬于同一分類 thenreturn 類標(biāo)簽 else尋找劃分?jǐn)?shù)據(jù)集的最好特征*劃分?jǐn)?shù)據(jù)集創(chuàng)建分支結(jié)點(diǎn)for 每個劃分的子集遞歸調(diào)用該函數(shù)并增加返回結(jié)果到分支結(jié)點(diǎn)中end forreturn 分支結(jié)點(diǎn) end if ***********************輸出******************** 一顆決策樹其中,最為重要的是“尋找劃分?jǐn)?shù)據(jù)集的最好特征”這一步(我特意打上了*號),這也是不同算法的區(qū)別所在。
ID3、C4.5和CART的區(qū)別
ID3算法
在劃分?jǐn)?shù)據(jù)集的過程當(dāng)中,我們希望決策樹的分支結(jié)點(diǎn)所包含的樣本盡可能地屬于同一類別,即結(jié)點(diǎn)的純度越來越高。
在ID3算法中,利用了信息增益這一準(zhǔn)則來劃分?jǐn)?shù)據(jù)集,要了解信息增益,首先要知道信息熵的概念。信息熵是度量樣本集合純度最常用的一項(xiàng)指標(biāo)。假設(shè)當(dāng)前樣本DDD的第kkk類樣本所占的比例為pk(k=1,2,...,n)p_k(k=1,2,...,n)pk?(k=1,2,...,n),則,DDD的信息熵定義為
Ent(D)=?∑k=1npk?log2pkEnt(D)=-\sum_{k=1}^{n}p_k \cdot log_2p_kEnt(D)=?k=1∑n?pk??log2?pk?
En(D)En(D)En(D)的值越小,DDD的純度就越高。
假定特征colcolcol有VVV個可能的取值{a1,a2,...,aV}\{a^1,a^2,...,a^V\}{a1,a2,...,aV},若使用colcolcol來對樣本集DDD劃分,則會劃分成VVV個子集,其中以ava^vav劃分出來的子集,記為DvD^vDv,那么信息增益可以表示為
Gain(D,col)=Ent(D)?∑v=1V∣Dv∣∣D∣Ent(Dv)Gain(D,col)=Ent(D)-\sum_{v=1}^{V}\dfrac{|D^v|}{|D|}Ent(D^v)Gain(D,col)=Ent(D)?v=1∑V?∣D∣∣Dv∣?Ent(Dv)
其中,∣D∣|D|∣D∣表示數(shù)據(jù)集中的樣本個數(shù)。
ID3就是使用信息增益最大為準(zhǔn)則來劃分?jǐn)?shù)據(jù)集的,計(jì)算出每個colcolcol下的Gain(D,col)Gain(D,col)Gain(D,col),然后選擇值最大的那一個。
但這樣的做法為偏袒于屬性數(shù)量較多的特征,即VVV較大的colcolcol,為解決這個問題,就有了C4.5算法。
C4.5算法
與ID3算法不同,C4.5是利用增益率來進(jìn)行劃分的,其定義如下:
Gain_ratio(D,col)=Gain(D,col)IV(col)Gain\_ratio(D,col)=\dfrac{Gain(D,col)}{IV(col)}Gain_ratio(D,col)=IV(col)Gain(D,col)?
其中
IV(col)=?∑v=1V∣Dv∣∣D∣log2DvDIV(col)=-\sum_{v=1}^{V}\dfrac{|D^v|}{|D|}log_2\dfrac{D^v}{D}IV(col)=?v=1∑V?∣D∣∣Dv∣?log2?DDv?
IV(col)IV(col)IV(col)稱為特征colcolcol的固有值,特征colcolcol的屬性越多,IV(col)IV(col)IV(col)的值就越大。
這樣一來就可以解決ID3的弊端,然而,值得注意的是,增益率準(zhǔn)則對屬性值數(shù)目較少的特征有所偏好,故C4.5并不是直接取增益率最大的特征來劃分?jǐn)?shù)據(jù)集的,而是采用了一種啟發(fā)式的方法:先從數(shù)據(jù)集中找出信息增益高于平均水平的特征,然后從中選擇增益率最高的。
CART算法
CART則采用了基尼指數(shù)來劃分屬性,數(shù)據(jù)集DDD的純度可以用基尼值來度量:
Gini(D)=∑k1=1n∑k1!=k2npk1pk2=1?∑k=1npk2Gini(D)=\sum_{k1=1}^{n}\sum_{k1!=k2}^{n}p_{k1}p_{k2}=1-\sum_{k=1}^{n}p_k^2Gini(D)=k1=1∑n?k1!=k2∑n?pk1?pk2?=1?k=1∑n?pk2?
基尼值反應(yīng)了從數(shù)據(jù)集中隨機(jī)抽取兩個樣本,其類標(biāo)簽不一致的概率,因此基尼值越小,數(shù)據(jù)集的純度越高。
特征colcolcol的基尼指數(shù)定義為
Gini_index(D,col)=∑v=1V∣Dv∣DGini(Dv)Gini\_index(D,col)=\sum_{v=1}^{V}\dfrac{|D^v|}{D}Gini(D^v)Gini_index(D,col)=v=1∑V?D∣Dv∣?Gini(Dv)
CART就是選擇劃分后基尼指數(shù)最小的特征為最優(yōu)劃分特征的。
剪枝
剪枝是解決過擬合問題的重要手段,主要分為“預(yù)剪枝”和“后剪枝”兩種。在剪枝的時候我們要引入驗(yàn)證集用來幫助我們判斷是否需要剪枝。
預(yù)剪枝
預(yù)剪枝是邊生成決策樹邊剪枝的一種做法。基于信息增益準(zhǔn)則或者增益率準(zhǔn)則或者基尼指數(shù),我們會選出最優(yōu)的特征來進(jìn)行數(shù)據(jù)集的劃分,這個時候預(yù)剪枝做的就是判斷劃分前后,驗(yàn)證集的精度是否會提高,如果提高的話就進(jìn)行劃分,否則不進(jìn)行劃分,也就是剪枝了。
預(yù)剪枝可以降低過擬合的風(fēng)險,而且還顯著減少了決策樹的訓(xùn)練時間開銷和測試時間開銷。
不過,預(yù)剪枝是一種貪心的做法,有些劃分可能在當(dāng)前不能提高性能,但在之后的劃分中可以顯著提高決策樹的性能,所以預(yù)剪枝有著欠擬合的風(fēng)險。
后剪枝
后剪枝是先生成一顆完整的決策樹,然后自底向上地進(jìn)行剪枝,判斷某個分支結(jié)點(diǎn)替換為葉子結(jié)點(diǎn)后是否會提高驗(yàn)證集的精度,可以提高則將分支結(jié)點(diǎn)替換為葉子結(jié)點(diǎn),否則不替換。
后剪枝比預(yù)剪枝保留了更多的分支,欠擬合的風(fēng)險很小,泛化性能也往往優(yōu)于預(yù)剪枝。但后剪枝的訓(xùn)練時間開銷要比預(yù)剪枝大得多。
連續(xù)值的處理
以上討論的都是針對離散特征進(jìn)行處理的,如果遇到了屬性為連續(xù)值的特征,往往采用二分法進(jìn)行處理。
給定樣本集DDD和連續(xù)特征colcolcol,假定在colcolcol上出現(xiàn)了mmm個不同的取值,將這些值從小到大進(jìn)行排序,即為{a1,a2,...,am}\{a^1,a^2,...,a^m\}{a1,a2,...,am}?;趧澐贮c(diǎn)ttt可將DDD劃分為子集Dt?D_t^-Dt??和Dt+D_t^+Dt+?,其中Dt?D_t^-Dt??中包含了在特征colcolcol上取值小于ttt的樣本,而Dt+D_t^+Dt+?中包含了在特征colcolcol上取值不小于ttt的樣本,ttt的取值屬于集合
Ta={ai+ai+12∣1≤i≤m?1}T_a=\{\dfrac{a^i+a^{i+1}}{2}|1\leq i \leq m-1\}Ta?={2ai+ai+1?∣1≤i≤m?1}
之后可以基于不同的ttt值進(jìn)行數(shù)據(jù)集劃分,選擇使得信息增益準(zhǔn)則或者增益率準(zhǔn)則最大,或者基尼指數(shù)最小的ttt作為劃分點(diǎn)。
缺失值的處理
現(xiàn)實(shí)數(shù)據(jù)中往往會遇到不完成的樣本,即樣本的某些值有缺失,這時候如果放棄該樣本不用則太過浪費(fèi),所以一般做如下處理。
給定訓(xùn)練集DDD和特征colcolcol,令D^\hat{D}D^表示在特征colcolcol上沒有缺失值的樣本子集。我們給每個樣本xxx賦予一個權(quán)重wxw_xwx?,并定義
ρ=∑x∈D^wx∑x∈Dwx\rho=\dfrac{\sum_{x \in \hat{D}}w_x}{\sum_{x \in D}w_x}ρ=∑x∈D?wx?∑x∈D^?wx??
不難看出,對于特征col,ρ\rhoρ表示無缺失值樣本所占的比例。這樣一來,比如信息增益就可以推廣為
Gain(D,col)=ρ?Gain(D^,col)Gain(D,col)=\rho \cdot Gain(\hat{D},col) Gain(D,col)=ρ?Gain(D^,col)
其它的準(zhǔn)則也可以用類似的方法進(jìn)行轉(zhuǎn)換。
結(jié)束語
以上是對決策樹部分知識的小結(jié)。如有不足,還請指正~
參考文獻(xiàn)
[1] 周志華. 機(jī)器學(xué)習(xí) : = Machine learning[M]. 清華大學(xué)出版社, 2016.
[2] Peter Harrington. 機(jī)器學(xué)習(xí)實(shí)戰(zhàn)[M]. 人民郵電出版社, 2013.
總結(jié)
- 上一篇: ZooKeeper 保证数据一致性
- 下一篇: LeetCode 1844. 将所有数字