吃瓜第四章 決策樹 2023-12-19

決策樹

決策樹

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是取有限個值的離散隨機變量,每個的概率為p_i,則X的(信息)熵定義為
H(X) = -\sum_{i=1}^n p_i \log p_i信息熵的值越小,代表樣本集合純度越高。

條件熵H(Y|X)指在已知隨機變量X的條件下隨機變量Y的不確定性,定義為X在給定條件下Y的條件概率分布的熵對X的數(shù)學期望。
H(Y|X)=\sum^n_{i=1}p_iH(Y|X=x_i)

信息增益表示得知特征的值而使得類的信息的不確定性減少的程度。
特征A對訓練數(shù)據(jù)集D的信息增益,即Gain(D,A)=H(D)-H(D|A)
一般的,熵與條件熵之差被稱作互信息,決策樹學習中的信息增益等價于訓練數(shù)據(jù)集中類與特征的互信息。

在決策樹學習中,信息增益就表示由于特征A而使得對數(shù)據(jù)集D進行分類的不確定性減少的程度。減少程度越大,意味著信息增益越大。所以我們選擇信息增益最大的特征。

ID3算法

設樣本集合為D,第k類樣本占比為p_k,則
Ent(D)=-\sum_{k=1}^Kp_k \log_2p_k特征a對D條件熵為\sum_{v=1}^V\frac{D^v}{D}Ent(D^v)其中v是特征a的可能取值,D^v是這種取值對應的樣本數(shù),\frac{D^v}{D}即a取這種值得概率。
那么,信息增益就是
Gain(D, a) = Ent(D) - \sum_{v=1}^V\frac{D^v}{D}Ent(D^v)
過程
輸入:數(shù)據(jù)集D,特征集A,閾值\epsilon
輸出:決策樹T

  1. 特殊情況:D中樣本同屬一個類,T為葉子。A為空集,T為葉子,按少數(shù)服從多數(shù)原則確定類別。
  2. 計算A中各個特征對D的信息增益,選擇信息增益最大的A_g作為測試屬性。
  3. 如果A_g小于增益閾值\epsilon,則置T為單結點樹。選D中實例數(shù)最大的類作為標記,返回T
  4. 否則,對A_g的每一個可能值,按A_g劃分D為若干非空子集D_i,將D_i中實例數(shù)最大的類作為標記,構建子節(jié)點,由節(jié)點和子節(jié)點構成樹T,返回T
  5. 對結點i,以D_i為數(shù)據(jù)集,A- \left \{ A_g \right \}為特征集,遞歸計算。

數(shù)據(jù)清理
要做數(shù)據(jù)的清理,轉換,相關性分析...

2.2 C4.5

ID3的缺陷:如果我們用一種特別特殊的特征,比如編號,學號...每個特征里只對應一個樣本,那這種情況下,Ent(D^v)肯定為0,信息增益只剩第一項Ent(D),肯定是所有特征里最大的。但是這樣生成的模型毫無泛化能力,無法對新樣本進行有效預測。

信息增益比

用信息增益比來選擇特征
g_R代指Gain_ratio
g_R(D,a)=\frac{g(D,a)}{H_a(D)}
分母是懲罰。劃分類別越多,熵越大,比值越小。其中
H_a(D)=-\sum_{v=1}^V \frac{|D^v|}{|D|} \log_2 \frac{|D^v|}{|D|}稱為屬性a的固有值

遞歸過程和ID3相同。

2.3 CART

CART(Classification and Regression Tree)分類回歸樹

  • 分類樹:基尼指數(shù)Gini Index
  • 回歸樹:平方誤差最小化

由兩部分組成

  • 決策樹生成
  • 決策樹剪枝
    CART決策樹是二叉樹

基尼指數(shù)

CART決策樹采用基尼指數(shù)Gini Index來選擇屬性
基尼值
Gini(D) = 1-\sum_{k=1}^K p_k^2直觀上,基尼值反映了從數(shù)據(jù)集中任選兩個樣本,其類別不一致的概率。基尼值越小,純度越高。
基尼指數(shù)Gini Index
對于屬性a,基尼系數(shù)
Gini_index(D,a)=\sum^V_{v=1}\frac{|D^v|}{|D|}Gini(D^v)在通過a分成的每一塊中,算Gini并乘上比例。

3 剪枝

剪枝可以減少決策樹的規(guī)模(復雜度),處理過擬合的問題。
分為預剪枝和后剪枝

預剪枝

在生成時對每個結點進行估計,如果當前結點的劃分不能提升泛化性能,就不劃分。可以使用性能評估的方法(如留出法等)來判斷。但是有欠擬合的風險。

后剪枝

在樹建成之后,自底向上地進行剪枝。
極小化Cost Complexity函數(shù):
CC(T)=Err(T)+\lambda R(T)
第一項是樹T的錯誤,第二項是正則項,代表樹的復雜度,\lambda \ge0為正則化參數(shù)。

CC(T)

過程
輸入:樹T,正則參數(shù)
輸出:修建后的樹T_0

  1. 計算每個葉子節(jié)點的代價
  2. 計算如果這個節(jié)點回縮到父節(jié)點之后的代價,如果回縮之后代價減少了,就剪枝
  3. 遞歸地向上回溯

根據(jù)驗證集上的代價決定是否剪枝

CART決策樹的剪枝

詳情可見:https://www.cnblogs.com/yang-ding/archive/2022/10/19/16805491.html

CART 剪枝

Step2:利用獨立的驗證集在子樹序列中選擇誤差最小的。

4 連續(xù)屬性與缺失屬性的處理

連續(xù)值處理

C4.5和CART都使用了連續(xù)屬性離散化,最簡單的是二分法。
對數(shù)據(jù)集上此屬性的所有值進行由小到大排序(假設共n個),取每兩個鄰接的值的中位數(shù)作為劃分點(共n-1個)。對每個點對應的劃分方法,算信息增益,或者增益比,基尼指數(shù)等來進行選擇。

缺失值處理

訓練集有缺失,如何劃分

Gain(D,a) = \rho Gain(\tilde{D},a)
\rho是數(shù)據(jù)完整的樣本所占(加權)比例,
\tilde{D}是數(shù)據(jù)完整的樣本集合。
同時劃入所有子節(jié)點,分別算劃分到各個子節(jié)點的概率,且樣本權值在與屬性值對應的子結點中調整為原權值×這個屬性值的概率

預測時屬性值缺失

按概率決定類別

5 多變量決策樹

多變量決策樹

參考:

  1. 南瓜書https://www.bilibili.com/video/BV1Mh411e7VU/?p=1&vd_source=32ad22ca1aa5a882c8b7fe1b7878657f
  2. 《機器學習》周志華
  3. ...
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容