決策樹
1 概述
決策樹的學習目的是產生一棵泛化能力強的決策樹,基本流程遵循“分而治之”的策略。
決策樹
- 最頂層是根節(jié)點,包含所有樣本
- 每個葉節(jié)點代表類或類分布(幾類的概率分布)(預測時直接選概率最大的類),對應決策結果
- 每個樣本均被劃分到一個葉節(jié)點
樹的生成
- 選擇特征
- 選擇閾值
2 四種建樹算法
基本算法框架:
有三種特殊情況導致遞歸返回:
- 當前結點包含的所有樣本都是同一類別了
- 當前屬性集為空,或是所有樣本所有屬性都一樣
- 當前結點不包含任何樣本
圖中最關鍵的是第8行,也就是如何選擇最佳屬性。在這個問題上,有四種衍生出的算法:
- CLS
- ID3
- C4.5
- CART
接下來一一介紹。
2.1 CLS
CLS是第一個決策樹算法。
CLS算法的基本思想是通過遞歸地將數(shù)據(jù)集分割成多個子集,直到滿足某個停止條件為止。在每個節(jié)點上,CLS算法選擇最優(yōu)的特征進行分割,并根據(jù)特征的取值將數(shù)據(jù)集劃分成不同的子集。
一旦數(shù)據(jù)集被劃分成子集,CLS算法會遞歸地在每個子集上重復上述過程,直到滿足停止條件為止。
采用不同的測試屬性及其先后順序會生成不同的決策樹。
不展開。
2.2 ID3
信息增益
先給出信息熵與條件熵的定義。
假設是取有限個值的離散隨機變量,每個的概率為
,則X的(信息)熵定義為
信息熵的值越小,代表樣本集合純度越高。
條件熵指在已知隨機變量
的條件下隨機變量Y的不確定性,定義為
在給定條件下
的條件概率分布的熵對
的數(shù)學期望。
信息增益表示得知特征的值而使得類的信息的不確定性減少的程度。
特征A對訓練數(shù)據(jù)集D的信息增益,即
一般的,熵與條件熵之差被稱作互信息,決策樹學習中的信息增益等價于訓練數(shù)據(jù)集中類與特征的互信息。
在決策樹學習中,信息增益就表示由于特征A而使得對數(shù)據(jù)集D進行分類的不確定性減少的程度。減少程度越大,意味著信息增益越大。所以我們選擇信息增益最大的特征。
ID3算法
設樣本集合為D,第k類樣本占比為,則
特征a對D條件熵為
其中
是特征a的可能取值,
是這種取值對應的樣本數(shù),
即a取這種值得概率。
那么,信息增益就是
過程:
輸入:數(shù)據(jù)集D,特征集A,閾值
輸出:決策樹T
- 特殊情況:D中樣本同屬一個類,T為葉子。A為空集,T為葉子,按少數(shù)服從多數(shù)原則確定類別。
- 計算A中各個特征對D的信息增益,選擇信息增益最大的
作為測試屬性。
- 如果
小于增益閾值
,則置T為單結點樹。選D中實例數(shù)最大的類作為標記,返回T
- 否則,對
的每一個可能值,按
劃分D為若干非空子集
,將
中實例數(shù)最大的類作為標記,構建子節(jié)點,由節(jié)點和子節(jié)點構成樹T,返回T
- 對結點i,以
為數(shù)據(jù)集,
為特征集,遞歸計算。
數(shù)據(jù)清理:
要做數(shù)據(jù)的清理,轉換,相關性分析...
2.2 C4.5
ID3的缺陷:如果我們用一種特別特殊的特征,比如編號,學號...每個特征里只對應一個樣本,那這種情況下,肯定為0,信息增益只剩第一項
,肯定是所有特征里最大的。但是這樣生成的模型毫無泛化能力,無法對新樣本進行有效預測。
信息增益比
用信息增益比來選擇特征
代指Gain_ratio
分母是懲罰。劃分類別越多,熵越大,比值越小。其中
稱為屬性a的固有值。
遞歸過程和ID3相同。
2.3 CART
CART(Classification and Regression Tree)分類回歸樹
- 分類樹:基尼指數(shù)Gini Index
- 回歸樹:平方誤差最小化
由兩部分組成
- 決策樹生成
- 決策樹剪枝
CART決策樹是二叉樹
基尼指數(shù)
CART決策樹采用基尼指數(shù)Gini Index來選擇屬性
基尼值:
直觀上,基尼值反映了從數(shù)據(jù)集中任選兩個樣本,其類別不一致的概率。基尼值越小,純度越高。
基尼指數(shù)Gini Index:
對于屬性a,基尼系數(shù)
在通過a分成的每一塊中,算Gini并乘上比例。
3 剪枝
剪枝可以減少決策樹的規(guī)模(復雜度),處理過擬合的問題。
分為預剪枝和后剪枝
預剪枝
在生成時對每個結點進行估計,如果當前結點的劃分不能提升泛化性能,就不劃分。可以使用性能評估的方法(如留出法等)來判斷。但是有欠擬合的風險。
后剪枝
在樹建成之后,自底向上地進行剪枝。
極小化Cost Complexity函數(shù):
第一項是樹T的錯誤,第二項是正則項,代表樹的復雜度,為正則化參數(shù)。
過程:
輸入:樹
輸出:修建后的樹
- 計算每個葉子節(jié)點的代價
- 計算如果這個節(jié)點回縮到父節(jié)點之后的代價,如果回縮之后代價減少了,就剪枝
- 遞歸地向上回溯
根據(jù)驗證集上的代價決定是否剪枝
CART決策樹的剪枝
詳情可見:https://www.cnblogs.com/yang-ding/archive/2022/10/19/16805491.html
Step2:利用獨立的驗證集在子樹序列中選擇誤差最小的。
4 連續(xù)屬性與缺失屬性的處理
連續(xù)值處理
C4.5和CART都使用了連續(xù)屬性離散化,最簡單的是二分法。
對數(shù)據(jù)集上此屬性的所有值進行由小到大排序(假設共n個),取每兩個鄰接的值的中位數(shù)作為劃分點(共n-1個)。對每個點對應的劃分方法,算信息增益,或者增益比,基尼指數(shù)等來進行選擇。
缺失值處理
訓練集有缺失,如何劃分
是數(shù)據(jù)完整的樣本所占(加權)比例,
是數(shù)據(jù)完整的樣本集合。
同時劃入所有子節(jié)點,分別算劃分到各個子節(jié)點的概率,且樣本權值在與屬性值對應的子結點中調整為原權值×這個屬性值的概率
預測時屬性值缺失
按概率決定類別
5 多變量決策樹
參考: