機器學習之決策樹 Decision Tree(一)

2021-08-13 03:56:00 字數 3751 閱讀 5513

決策樹是乙個樹結構(可以是二叉樹或非二叉樹),每個非葉節點表示乙個特徵屬性上的測試,每個分支代表這個特徵屬性在某個值域上的輸出,而每個葉節點存放乙個類別。使用決策樹進行決策的過程就是從根節點開始,測試待分類項中相應的特徵屬性,按照其值選擇輸出分支,直到到達葉節點,將葉節點存放的類別作為決策結果。

構造決策樹的關鍵步驟是在某個節點處按照某一特徵屬性的不同劃分構造不同的分支,其目標是讓各個**子集盡可能地「純」,就是盡量使乙個**子集中待分類項屬於同一類別。不純度的選取有多種方法,每種方法形成了不同的決策樹方法。id3演算法使用資訊增益作為不純度,c4.5演算法使用資訊增益率作為不純度,cart演算法使用基尼係數作為不純度。

在資訊理論與概率統計中,熵(entropy)是表示隨機變數不確定性的度量。設d為訓練樣本的一組劃分,則d的熵表示為:

其中pi表示第i個類別在整個訓練集中出現的概率,可以用屬於此類別樣本的數量除以訓練集樣本總數作為估計。

假設將訓練集按屬性a進行劃分,產生v個分支結點,其中第j個分支結點記為dj,考慮到不同分支結點所包含的樣本數不同,賦予權重

資訊增益即為二者的差值:

一般而言,資訊增益越大,意味著使用屬性a來進行劃分所獲得的純度提公升越大,因此可用資訊增益進行決策樹的劃分屬性選擇,id3決策樹學習演算法就是以資訊增益為準則來選擇劃分屬性。

以a1、a2、a3、a4分別表示年齡、有工作、有自己的房子和信貸情況四個特徵。分別計算各特徵的資訊增益,選擇資訊增益值最大的特徵作為最優特徵。

假如將樣本編號作為乙個特徵,每個分支結點僅包含乙個樣本,這些分支結點的純度達到最大,使用資訊增益得到的決策樹不具有泛化能力,無法對新樣本進行有效**。資訊增益準則的缺點是對可取值數目較多的屬性有所偏好,為了減少這種偏好可能帶來的不利影響,c4.5決策樹演算法使用增益率選擇最優劃分屬性。

增益率定義為

屬性a的可能取值數目越多,則iv(a)的值通常會較大。增益率準則對可取值數目較少的屬性有所偏好。c4.5演算法並不是直接選擇增益率最大的候選劃分屬性,而是使用了乙個啟發式:先從候選劃分屬性中找出資訊增益高於平均水平的屬性,再從中選擇增益率最高的。

直觀來說,gini(d)反映了從資料集d中隨機抽取兩個樣本,其類別不一致的概率,因此gini(d)越小,資料集d的純度越高。

屬性a的基尼指數定義為

cart (classification and regression tree) 演算法既可以用於分類,也可以用於回歸。對回歸樹用平方誤差最小化準則,對分類樹用基尼指數最小化準則,進行特徵選擇,生成二叉樹。

剪枝(pruning)是決策樹學習演算法對付過擬合的主要手段。決策樹剪枝的基本策略有預剪枝和後剪枝。預剪枝是指在決策樹生成過程中,對每個節點在劃分前先進行估計,若當前節點的劃分不能帶來決策樹泛化效能提公升,則停止劃分並將當前節點標記為葉節點;後剪枝則是先從訓練集生成一棵完整的決策樹,然後自底向上地對非葉節點進行考察,若將該節點對應的子樹替換為葉節點能帶來決策樹泛化效能的提公升,則將該子樹替換為葉節點。

判斷決策樹泛化效能提公升的方法:1、留出法,即預留一部分資料用作「驗證集」以進行效能評估;2、損失函式。

預剪枝對劃分前後的泛化效能進行估計,若對某一節點劃分後驗證集的精度下降,則禁止劃分該節點。預剪枝使得決策樹的很多分支沒有展開,不僅降低了過擬合的風險,還顯著減少了決策樹的訓練時間開銷和測試時間開銷。但另一方面,有些分支的當前劃分雖不能提公升泛化效能、甚至可能導致泛化效能暫時下降,但在其基礎上進行的後續劃分卻有可能導致效能顯著提高。預剪枝基於「貪心」的本質禁止這些分支展開,給預剪枝決策樹帶來了欠擬合的風險。

停止分類的條件:

(1) 如果節點中所有觀測屬於一類;

(2) 如果節點中所有觀測的屬性取值一致;

(3) 如果樹的深度達到設定的閾值;

(4) 如果該節點所含觀測值小於設定的父節點應含觀測數的閾值;

(5) 如果該節點的子節點所含觀測數將小於設定的閾值;

(6) 如果沒有屬效能滿足設定的**準則的閾值。

後剪枝先從訓練集生成一棵完整決策樹,對每個節點,若將該節點對應的子樹替換為葉節點後,驗證集精度提公升,則進行剪枝。後剪枝決策樹通常比預剪枝決策樹保留了更多的分支。一般情況下,後剪枝決策樹的欠擬合風險很小,泛化效能往往優於預剪枝決策樹,但後剪枝過程是在生成完全決策樹之後進行的,並且要自底向上地對樹中的所有非葉節點進行逐一考察,因此其訓練時間開銷比未剪枝決策樹和預剪枝決策樹都要大得多。

後剪枝的方法:

(1) reduced-error pruning (rep):刪除以此節點為根的子樹使其成為葉節點,賦予該節點關聯的訓練資料的最常見分類,當修剪後的樹對於驗證集合的效能不會比原來的樹差時,才真正刪除該節點。

(2) pessimistic error pruning (pep):計算某節點的誤差,計算該節點的葉節點誤差之和,當其誤差小於等於葉節點誤差之和加乙個標準差時,則修建該節點。

(3) ccp:給基尼指數加上懲罰項,此時樹的層次越深,基尼指數的懲罰項越大。

設樹t的葉節點個數為|t|,t是樹的葉節點,該葉節點有nt個樣本點,其中k類樣本點有ntk個,k=1、2…k,

其中經驗熵為

引數α≥0控制兩者之間的影響,較大的α促使選擇較簡單的模型,較小的α促使選擇較複雜的模型。剪枝就是當α確定時,選擇損失函式最小的模型,子樹越大,往往與訓練資料的擬合越好,但是模型的複雜度就越高;相反,子樹越小,模型的複雜度就越低,但是往往與訓練資料的擬合不好,損失函式正好表示了對兩者的平衡。

由於連續屬性的可取值數目不再有限,因此不能直接根據連續屬性的可取值來對接點進行劃分,此時,連續屬性離散化技術可派上用場,最簡單的策略是採用二分法對連續屬性進行處理。給定樣本集d和連續屬性a,假定a在d上出現了n個不同的取值,將這些值從小到大進行排序,記為

需要注意,與離散屬性不同,劃分節點時,若當前節點劃分屬性為連續屬性,該屬性還可以作為其後代節點的劃分屬性。

現實任務中常會遇到不完整樣本,即樣本的某些屬性值缺失,這時需要解決兩個問題:(1) 如何在屬性值缺失的情況下進行劃分屬性選擇?(2) 給定劃分屬性,若樣本在該屬性上的值缺失,如何對樣本進行劃分?

隨機森林是乙個比較火的演算法,它有很多優點:

隨機森林演算法的主要缺點是模型規模。模型很容易就會花費成百上千兆位元組記憶體,最後會因為評估速度慢而結束。另乙個可能會引發擔憂的缺點就是隨機森林模型是很難解釋清楚的黑箱。

隨機森林,顧名思義,是用隨機的方式建立乙個森林,森林裡面有很多決策樹,每一棵決策樹之間是沒有關聯的。在得到森林之後,當有乙個新的輸入樣本進入的時候,就用森林中的每一棵決策樹分別判斷,然後根據多數投票結果**樣本的類別。

同一批資料用同樣的演算法只能產生一棵樹,在建立每一棵決策樹時,取樣包括兩個隨機的過程。一是樣本的隨機,採用bootstraping方法,這是一種有放回的抽樣方法,也就是在取樣得到的樣本集合中可能有重複的樣本。假設輸入樣本為n個,那麼取樣得到的樣本也是n個。這樣在訓練時每一棵樹的輸入樣本都不是全部樣本,相對不容易出現過擬合。二是特徵選擇的隨機。從m個特徵中,隨機選擇m個特徵(m<

機器學習之決策樹

在這裡,我想以更直觀的方式幫助各位理解 掌握並且運用 注意 是運用 決策樹,從而為機器學習作鋪墊。ps 但還是希望大家稍微知道決策樹大概是什麼樣子。1.根結點 root node 沒有入邊,但有零條或多條出邊 2.內部結點 internal node 恰有一條入邊和 兩條或多條出邊 3.葉結點 le...

機器學習之決策樹

決策樹是很常見的機器學習分類演算法,竟然叫決策樹,那麼它的模型其實就像樹一樣。通過對樣本集的學習,挖掘出有用的規則。對於程式設計師來說或許以條件語句來看就更好理解了,決策樹可以看成是多個if then條件語句的集合。這種模型等同於我們寫的條件語句,所以它的 分類速度是很快的。來個例子了解下決策樹分類...

機器學習之決策樹

簡介 決策樹是一種基本的分類方法,當然也可以用於回歸。我們一般只討論用於分類的決策樹。決策樹模型呈樹形結構。在分類問題中,表示基於特徵對例項進行分類的過程,它可以認為是if then規則的集合。在決策樹的結構中,每乙個例項都被一條路徑或者一條規則所覆蓋。通常決策樹學習包括三個步驟 特徵選擇 決策樹的...