1. 決策樹算法簡介


1. 決策樹算法簡介

決策樹思想的來源非常朴素,程序設計中的條件分支結構就是if-else結構,最早的決策樹就是利用這類結構分割數據的一種分類學習方法

決策樹:是一種樹形結構,其中每個內部節點表示一個屬性上的判斷,每個分支代表一個判斷結果的輸出,最后每個葉節點代表一種分類結果,本質是一顆由多個判斷節點組成的樹。

怎么理解這句話?通過一個對話例子

想一想這個女生為什么把年齡放在最上面判斷!!!!!!!!!

上面案例是女生通過定性的主觀意識,把年齡放到最上面,那么如果需要對這一過程進行量化,該如何處理呢?

此時需要用到信息論中的知識:信息熵,信息增益

2 決策樹分類原理

1 熵

1.1 概念

物理學上,熵 Entropy 是“混亂”程度的量度。

 

 

 

系統越有序,熵值越低;系統越混亂或者分散,熵值越高。

  • 信息理論:

1、從信息的完整性上進行的描述:

當系統的有序狀態一致時,**數據越集中的地方熵值越小,數據越分散的地方熵值越大。

2、從信息的有序性上進行的描述:

當數據量一致時,系統越有序,熵值越低;系統越混亂或者分散,熵值越高。

1948年香農提出了信息熵(Entropy)的概念。

假如事件A的分類划分是(A1,A2,...,An),每部分發生的概率是(p1,p2,...,pn),那信息熵定義為公式如下:(log是以2為底,lg是以10為底)

 

 

1.2 案例

課堂案例1:
如果一顆骰子的六個面都是1 ,投擲它不會給你帶來任何新信息,因為你知道它的結果肯定是1,它的信息熵為??

答案:
 - log(1) = 0 。
課堂案例2:
假設我們沒有看世界杯的比賽,但是想知道哪支球隊會是冠軍,
我們只能猜測某支球隊是或不是冠軍,然后觀眾用對或不對來回答,
我們想要猜測次數盡可能少,你會用什么方法?

答案:
二分法:
假如有 16 支球隊,分別編號,先問是否在 1-8 之間,如果是就繼續問是否在 1-4 之間,
以此類推,直到最后判斷出冠軍球隊是哪只。
如果球隊數量是 16,我們需要問 4 次來得到最后的答案。那么世界冠軍這條消息的信息熵就是 4。

如果有32個球隊,准確的信息量應該是: 
H = -(p1 * logp1 + p2 * logp2 + ... + p32 * logp32),
其中 p1, ..., p32 分別是這 32 支球隊奪冠的概率。
當每支球隊奪冠概率相等都是 1/32 的時:H = -(32 * 1/32 * log1/32) = 5
每個事件概率相同時,熵最大,這件事越不確定。
隨堂練習:
籃球比賽里,有4個球隊 {A,B,C,D} ,獲勝概率分別為{1/2, 1/4, 1/8, 1/8}
求H(X)
答案:
H(X) = 1\2log(2)+1\4log(4)+1\8log(8)+1\8log(8)=(1\2+1\2+3\8+3\8)log(2)=7\4bits
tips:
    以2為底,記做lb,單位bit
    以e為底,記做ln,單位nat

2 決策樹的划分依據一------信息增益

2.1 概念

信息增益:以某特征划分數據集前后的熵的差值。熵可以表示樣本集合的不確定性,熵越大,樣本的不確定性就越大。因此可以使用划分前后集合熵的差值來衡量使用當前特征對於樣本集合D划分效果的好壞。

信息增益 = entroy(前) - entroy(后)

  • 定義與公式

特征A對訓練數據集D的信息增益g(D,A),定義為集合D的信息熵H(D)與特征A給定條件下D的信息條件熵H(D|A)之差,即公式為:

 

 

公式的詳細解釋:

 

 

 注:信息增益表示得知特征X的信息而使得類Y的信息熵減少的程度

2.2 案例:

如下左圖,第一列為論壇號碼,第二列為性別,第三列為活躍度,最后一列用戶是否流失。

我們要解決一個問題:性別和活躍度兩個特征,哪個對用戶流失影響更大?

 

 

通過計算信息增益可以解決這個問題,統計上右表信息

其中Positive為正樣本(已流失),Negative為負樣本(未流失),下面的數值為不同划分下對應的人數。

可得到三個熵:

整體熵:

 

性別熵:

 

 性別信息增益

 

 活躍度熵

 

 

活躍度的信息增益比性別的信息增益大,也就是說,活躍度對用戶流失的影響比性別大。

在做特征選擇或者數據分析的時候,我們應該重點考察活躍度這個指標。

3 決策樹的划分依據二----信息增益率

增益率:增益比率度量是用前面的增益度量Gain(S,A)和所分離信息度量SplitInformation(如上例的性別,活躍度等)的比值來共同定義的。

 

 

4 決策樹的划分依據三——基尼值和基尼指數

4.1 概念

基尼值Gini(D):從數據集D中隨機抽取兩個樣本,其類別標記不一致的概率。故,Gini(D)值越小,數據集D的純度越高。

 

 基尼指數Gini_index(D):一般,選擇使划分后基尼系數最小的屬性作為最優化分屬性。

 

 

4.2 案例

請根據下圖列表,按照基尼指數的划分依據,做出決策樹。

 

 

1,對數據集非類標號屬性{是否有房,婚姻狀況,年收入}分別計算它們的Gini系數增益,取Gini系數增益值最大的屬性作為決策樹的根節點屬性。

2,根節點的Gini系數為:

 

 

3,當根據是否有房來進行划分時,Gini系數增益計算過程為:

 

 

 

 

 

4,若按婚姻狀況屬性來划分,屬性婚姻狀況有三個可能的取值{married,single,divorced},分別計算划分后的Gini系數增益。

​ {married} | {single,divorced}

​ {single} | {married,divorced}

​ {divorced} | {single,married}

分組為{married} | {single,divorced}時:

 

 當分組為{single} | {married,divorced}時:

 

 當分組為{divorced} | {single,married}時

 

對比計算結果,根據婚姻狀況屬性來划分根節點時取Gini系數增益最大的分組作為划分結果,即:{married} | {single,divorced}

5,同理可得年收入Gini:

對於年收入屬性為數值型屬性,首先需要對數據按升序排序,然后從小到大依次用相鄰值的中間值作為分隔將樣本划分為兩組。例如當面對年收入為60和70這兩個值時,我們算得其中間值為65。以中間值65作為分割點求出Gini系數增益。

 

最大化增益等價於最小化子女結點的不純性度量(Gini系數)的加權平均值,現在我們希望最大化Gini系數的增益。根據計算知道,三個屬性划分根節點的增益最大的有兩個:年收入屬性和婚姻狀況,他們的增益都為0.12。此時,選取首先出現的屬性作為第一次划分。

6,接下來,采用同樣的方法,分別計算剩下屬性,其中根節點的Gini系數為(此時是否拖欠貸款的各有3個records)

7,對於是否有房屬性,可得:

 

 

8,對於年收入屬性則有:

 

 

 

 

4.3 小結

一,決策樹構建的基本步驟如下:

  1. 開始將所有記錄看作一個節點

  2. 遍歷每個變量的每一種分割方式,找到最好的分割點

  3. 分割成兩個節點N1和N2

  4. 對N1和N2分別繼續執行2-3步,直到每個節點足夠“純”為止。

二,決策樹的變量可以有兩種:

  1. 數字型(Numeric):變量類型是整數或浮點數,如前面例子中的“年收入”。用“>=”,“>”,“<”或“<=”作為分割條件(排序后,利用已有的分割情況,可以優化分割算法的時間復雜度)。

  2. 名稱型(Nominal):類似編程語言中的枚舉類型,變量只能從有限的選項中選取,比如前面例子中的“婚姻情況”,只能是“單身”,“已婚”或“離婚”,使用“=”來分割。

三,如何評估分割點的好壞?

​ 如果一個分割點可以將當前的所有節點分為兩類,使得每一類都很“純”,也就是同一類的記錄較多,那么就是一個好分割點。

​ 比如上面的例子,“擁有房產”,可以將記錄分成了兩類,“是”的節點全部都可以償還債務,非常“純”;“否”的節點,可以償還貸款和無法償還貸款的人都有,不是很“純”,但是兩個節點加起來的純度之和與原始節點的純度之差最大,所以按照這種方法分割。構建決策樹采用貪心算法,只考慮當前純度差最大的情況作為分割點。

 

5 總結:常見決策樹類型比較

 

 

 

 

5.1 ID3 算法

存在的缺點

​ (1) ID3算法在選擇根節點和各內部節點中的分支屬性時,采用信息增益作為評價標准。信息增益的缺點是傾向於選擇取值較多的屬性,在有些情況下這類屬性可能不會提供太多有價值的信息.

​ (2) ID3算法只能對描述屬性為離散型屬性的數據集構造決策樹。

5.2 C4.5算法

做出的改進(為什么使用C4.5要好)

​ (1) 用信息增益率來選擇屬性

​ (2) 可以處理連續數值型屬性

​ (3)采用了一種后剪枝方法

​ (4)對於缺失值的處理

C4.5算法的優缺點

​ 優點:

​ 產生的分類規則易於理解,准確率較高。

​ 缺點:

​ 在構造樹的過程中,需要對數據集進行多次的順序掃描和排序,因而導致算法的低效。

​ 此外,C4.5只適合於能夠駐留於內存的數據集,當訓練集大得無法在內存容納時程序無法運行。

5.3 CART算法

CART算法相比C4.5算法的分類方法,采用了簡化的二叉樹模型,同時特征選擇采用了近似的基尼系數來簡化計算。

C4.5不一定是二叉樹,但CART一定是二叉樹。

同時,無論是ID3, C4.5還是CART,在做特征選擇的時候都是選擇最優的一個特征來做分類決策,但是大多數,分類決策不應該是由某一個特征決定的,而是應該由一組特征決定的。這樣決策得到的決策樹更加准確。這個決策樹叫做多變量決策樹(multi-variate decision tree)。在選擇最優特征的時候,多變量決策樹不是選擇某一個最優特征,而是選擇最優的一個特征線性組合來做決策。這個算法的代表是OC1,這里不多介紹。

如果樣本發生一點點的改動,就會導致樹結構的劇烈改變。這個可以通過集成學習里面的隨機森林之類的方法解決。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM