決策樹模型

2022-09-18 22:27:08 字數 3996 閱讀 8616

決策樹的目標是從一組樣本資料中,根據不同的特徵和屬性,建立一棵樹形的分類結構。

決策樹的學習本質上是從訓練集中歸納出一組分類規則,得到與資料集矛盾較小的決策樹,同時具有很好的泛化能力。決策樹學習的損失函式通常是正則化的極大似然函式,通常採用啟發式方法,近似求解這一最優化問題。

對於樣本集合d,類別數為k,資料集d的經驗熵表示為:

\[h(d)=-\sum_^k\frac \log_2}

\]其中\(c_k\)是樣本集合\(d\)中屬於第\(k\)類的樣本子集,\(|c_k|\)表示該子集的元素個數,\(|d|\)表示元素集合的元素個數。

某個特徵\(a\)對於資料集\(d\)的經驗條件熵\(h(d|a)\)為

\[h(d|a)=\sum_^n\frach(d_i)

\]其中\(d_i\)表示\(d\)中特徵\(a\)取第\(i\)個值的樣本子集。

資訊增益\(g(d,a)\)為:

\[g(d,a)=h(d)-h(d|a)

\]資訊增益比為:

\[g_r(d,a)=\frac

\]其中,

\[h_a(d)=-\sum_^n\frac\log_2}

\]gini描述的是資料的純度,與資訊熵含義類似

\[gini(d)=1-\sum_^n)}^2

\]cart樹在每一次迭代中選擇基尼指數最小的特徵及其對應的切分點進行分類。與id3、c4.5不同的是,cart時一顆二叉樹,採用二元切割法,每一步將資料按特徵a的取值切成兩份,分別進入左右子樹。特徵a的gini指數定義為:

\[gini(d|a)=1-\sum_^n\fracgini(d_i )

\]id3傾向於取值較多的特徵,因為資訊增益反映的是給定條件以後不確定性減少的程度,特徵取值越多就意味著確定性更高,也就是條件熵越小,資訊增益越大。

從樣本型別的角度,id3只能處理離散型變數,而c4.5和cart都可以處理連續型變數。從應用的角度,id3和c4.5只能用於分類任務,而cart也可以用於回歸任務(使用最小平方誤差準則)。

分類樹以c4.5分類樹為例,c4.5分類樹在每次分枝時,是窮舉每乙個feature的每乙個閾值,找到使得按照feature<=閾值,和feature>閾值分成的兩個分枝的熵最大的閾值(熵最大的概念可理解成盡可能每個分枝的男女比例都遠離1:1),按照該標準分枝得到兩個新節點,用同樣方法繼續分枝直到所有人都被分入性別唯一的葉子節點,或達到預設的終止條件,若最終葉子節點中的性別不唯一,則以多數人的性別作為該葉子節點的性別。

總結:分類樹使用資訊增益或增益比率來劃分節點;每個節點樣本的類別情況投票決定測試樣本的類別。

回歸樹回歸樹總體流程也是類似,區別在於,回歸樹的每個節點(不一定是葉子節點)都會得乙個**值,以年齡為例,該**值等於屬於這個節點的所有人年齡的平均值。分枝時窮舉每乙個feature的每個閾值找最好的分割點,但衡量最好的標準不再是最大熵,而是最小化均方差即(每個人的年齡-**年齡)^2 的總和 / n。也就是被**出錯的人數越多,錯的越離譜,均方差就越大,通過最小化均方差能夠找到最可靠的分枝依據。分枝直到每個葉子節點上人的年齡都唯一或者達到預設的終止條件(如葉子個數上限),若最終葉子節點上人的年齡不唯一,則以該節點上所有人的平均年齡做為該葉子節點的**年齡。

總結:回歸樹使用最大均方差劃分節點;每個節點樣本的均值作為測試樣本的回歸**值。

決策樹的損失函式通常是正則化的極大似然函式。

為了避免出現過擬合的現象,我們要對決策樹進行剪枝。

決策樹損失函式為:

\[c_α (t)=\sum_n_t h_t (t)+α|t|

\]右邊第一項表示誤差大小,第二項表示模型的複雜度,也就是用葉節點表示,防止過擬化。其中\(|t|\)代表葉節點個數,\(n_t\)表示具體某個葉節點的樣例數,\(h_t (t)\)表示葉節點經驗熵。

其中,葉節點經驗熵為

\[h_t (t)=-\sum_^k\frac}\log⁡}}

\]其中,\(n_t\)表示該葉節點有\(n_t\)個樣本,其中\(k\)類的樣本有\(n_\)個。

正則化的損失函式中前一項代表經驗誤差,而在概率模型中(決策樹模型是一種概率模型),經驗誤差函式的獲得往往通過將極大似然函式取反,即將求極大化為求極小而獲得。因此,在概率模型中,極大似然函式與經驗誤差函式可以認為是相同的概念,那麼必然就可以通過經驗誤差函式來推導出極大似然函式,以此來加深對決策樹損失函式的理解。

\[\begin

\sum_n_t h_t (t)=&

-\sum_\sum_^k\frac}\log⁡}}*n_t \\

=&-\sum_\sum_^k}\log⁡}} \\

=&-\log\prod_^\prod_^})}^} \\

\end

\]至此,損失函式被化簡如上,可以看到它與我們所要求的極大似然函式僅一步之遙:將求極小轉為求極大,即去掉上式的負號,我們得到對數極大似然函式:

\[l(t) = \log\prod_^\prod_^})}^}

\]其對應的極大似然函式是

\[l(t) = \prod_^\prod_^})}^}

\]至此,決策樹模型的極大似然函式推導完畢。

其意義個人理解為:先對各葉節點之間進行極大似然估計,再對各葉節點內部進行極大似然估計,由此得到決策樹模型中的極大似然函式。

決策樹處理連續值的方法

因為連續屬性的可取值數目不再有限,因此不能像前面處理離散屬性列舉離散屬性取值來對結點進行劃分。因此需要連續屬性離散化,常用的離散化策略是二分法,這個技術也是c4.5中採用的策略。

對連續屬性的處理如下

1、對特徵的取值進行公升序排序

2、兩個特徵取值之間的中點作為可能的**點,將資料集分成兩部分,計算每個可能的**點的資訊增益(inforgain)。優化演算法就是只計算分類屬性發生改變的那些特徵取值。

3、選擇修正後資訊增益(inforgain)最大的**點作為該特徵的最佳**點

4、計算最佳**點的資訊增益率(gain ratio)作為特徵的gain ratio。注意,此處需對最佳**點的資訊增益進行修正:減去log2(n-1)/|d|(n是連續特徵的取值個數,d是訓練資料數目,此修正的原因在於:當離散屬性和連續屬性並存時,c4.5演算法傾向於選擇連續特徵做最佳樹**點)

決策樹處理缺失值的方法

1、採用拋棄缺失值

拋棄極少量的缺失值的樣本對決策樹的建立影響不是太大。但是如果屬性缺失值較多或是關鍵屬性值缺失,建立的決策樹將是不完全的,同時可能給使用者造成知識上的大量錯誤資訊,所以拋棄缺失值一般不採用。只有在資料庫具有極少量的缺失值同時缺失值不是關鍵的屬性值時,且為了加快建立決策樹的速度,才採用拋棄屬性缺失值的方式建立決策樹。

2、補充缺失值

缺失值較少時按照我們上面的補充規則是可行的。但如果資料庫的資料較大,缺失值較多(當然,這樣獲取的資料庫在現實中使用的意義已不大,同時在資訊獲取方面基本不會出現這樣的資料庫),這樣根據填充後的資料庫建立的決策樹可能和根據正確值建立的決策樹有很大變化。

3、概率化缺失值

對缺失值的樣本賦予該屬性所有屬性值的概率分布,即將缺失值按照其所在屬性已知值的相對概率分布來建立決策樹。用係數f進行合理的修正計算的資訊量,f=資料庫中缺失值所在的屬性值樣本數量去掉缺失值樣本數量/資料庫中樣本數量的總和,即f表示所給屬性具有已知值樣本的概率。

4、缺失值單獨分支

為什麼c4.5要用資訊增益率代替資訊增益?為什麼資訊增益會偏向多取值特徵?

資訊增益在面對類別較少的離散資料時效果較好,但是面對取值較多的特徵時效果會很不如人意。關於資訊增益對取值較多特徵的偏向性,我認為原因是:當特徵的取值較多時,根據此特徵劃分得到的子集純度有更大的可能性會更高(對比與取值較少的特徵),因此劃分之後的熵更低,由於劃分前的熵是一定的,因此資訊增益更大,因此資訊增益比較偏向取值較多的特徵。舉個較為極端的例子可能更好理解:如果特徵a的取值能將每乙個樣本都分到乙個節點當中去的時候(如編號等特徵),條件熵部分會為0,這意味著該情況下的資訊增益達到了最大值,故id3演算法一定會選擇特徵a。但是,顯然的,我們知道這個特徵a顯然不是最佳選擇。

決策樹模型

決策樹採用樹結構來進行決策的,可以認為是if then規則集合,也可以認為是對特徵空間劃分,每個子空間對應乙個輸出。其優點簡單,快速,可解釋性強。決策樹通常包含三部分 特徵選擇,決策樹生成,決策樹剪枝。資訊增益,資訊增益比,基尼指數是常用的特徵選擇準則 資訊熵 表示變數的不確定程度,資訊熵越大不確定...

決策樹模型

前言 決策樹生成模型三要素 一般而言,一顆 完全生長 的決策樹包含 特徵選擇 決策樹構建 剪枝三個過程。決策樹是一種啟發式貪心演算法,每次選取的分割資料的特徵是當前的最佳選擇,並不關心是否達到最優。一 特徵選擇 1.1 熵 樣本集合 純度 不確定性 穩定性的指標 熵越大,樣本的不確定性就越大 在決策...

決策樹模型

決策樹可以簡單的理解為根據特徵的取值而最終分成不同的類,也可以理解為簡單的if then的規則集合 樹嘛 那麼怎麼樣選擇節點是乙個很有技術的問題。為什麼呢,因為如果你的中間節點擊的不錯是不是就能夠很容易的將決策樹的各個節點很容易的分清楚了 說白了,你選的樹分叉的地方越有區分度 分類越多越好你乙個特徵...