1. 程式人生 > >機器學習筆記(參考吳恩達機器學習視訊筆記)16_決策樹

機器學習筆記(參考吳恩達機器學習視訊筆記)16_決策樹

16 決策樹

決策樹是一種監督學習演算法,以樹狀圖為基礎,其輸出結果為一系列簡單實用的規則。它就是一系列的if-then語句,既可以用於分類問題,也可以用於迴歸問題。構建決策樹之通常包括三個步驟:

       1)特徵選擇

       2)決策樹生成

       3)決策樹剪枝

在介紹具體步驟之前首先介紹資訊熵的概念。

16.1 資訊熵

資訊熵,是一個與資訊有關的概念,一般而言,是可以量化的。資訊量的大小跟事情的不確定性有關。它應該滿足以下4個特點:

  1. 不是負數。

  2. 資訊量與資訊量間可以相加。

  3. 資訊量與概率有關,它連續依賴於概率。

  4. 資訊量的大小與可能結果數有關。

-log(x)(0<x<1,底數大於1)滿足以上四個特點。即一個事件的資訊量就是這個事件發生的概率的負對數。資訊熵是跟所有可能性有關係的。每個可能事件的發生都有個概率。資訊熵就是平均而言發生一個事件我們得到的資訊量大小。所以數學上,資訊熵其實是資訊量的期望。熵:度量隨機變數的不確定性。(純度)

定義:

假設隨機變數X的可能取值有,對於每個可能的取值,其概率P(X=)=,因此隨機變數X的熵為:

對於樣本集合D來說,隨機變數X是樣本的類別,即,假設樣本有K個類別,|

|表示類別k的樣本個數,|D|表示樣本總數,則對於樣本集合D來說熵為:

熵越大,樣本的不確定性就越大。

16.2 特徵選擇

特徵選擇指選擇有較強分類能力的特徵。而分類能力通過資訊增益或者資訊增益比來刻畫。選擇特徵的標準是找出區域性最優的特徵作為判斷進行切分,取決於切分後節點資料集合中類別的有序程度(純度),劃分後的分割槽資料越純,切分規則越合適。衡量節點資料集合的純度有:熵、基尼係數和方差。熵和基尼係數是針對分類的,方差是針對迴歸的。

16.2.1 資訊增益(ID3演算法)

資訊增益是以某特徵劃分資料集前後的熵的差值。熵可以表示樣本集合的不確定性,熵越大,樣本的不確定性就越大。因此,可以用某特徵劃分資料集前後的熵的差值來衡量此特徵對於樣本集合D劃分效果的好壞。給定特徵A與訓練資料集D,定義資訊增益

為:

資訊增益的缺點是偏向取值較多的特徵。特徵的值較多時,根據此特徵劃分更容易得到純度更高的子集,故劃分之後的熵更低,因為劃分前的熵是一定的,所以資訊增益更大,更偏向取值較多的特徵。

16.2.2 資訊增益比(C4.5演算法)

可以通過定義資訊增益比來解決資訊增益向取值較多的特徵的問題。特徵A對訓練集D的資訊增益比定義為:

其中,表示將當前特徵A作為隨機變數(取值為特徵A的各個特徵值)求得的經驗熵。

16.3 決策樹生成

基本的決策樹的生成演算法中,典型的有工。3生成演算法和〔4.5生成演算法,它們生成樹的過程大致相似二ID3是採用的資訊增益作為特徵選擇的度量,而C4.5則採用資訊增益比。

兩種演算法的比較:

C4.5演算法繼承ID3演算法的優點,並在以下幾方面對ID3演算法進行了改進:

  1. 用資訊增益率來選擇屬性,克服了用資訊增益選擇屬性時偏向選擇取值多的屬性的不足。

  2. 在樹構造過程中進行剪枝。

  3. 能夠完成對連續屬性的離散化處理。

  4. 能夠對不完整資料進行處理。

C4.5演算法有如下優點:產生的分類規則易於理解,準確率較高。其缺點是:在構造樹的過程中,需要對資料集進行多次的順序掃描和排序,因而導致演算法的低效。此外。C4.5只適合於能夠駐留於記憶體的資料集,當訓練集大得無法在記憶體容納時程式無法執行。C4.5和ID3兩個演算法只有樹的生成演算法,生成的樹容易產生過擬合。即對訓練集匹配很好,但是預測測試集效果較差。

16.4 決策樹剪枝

決策樹需要剪枝的原因是:決策樹生成演算法生成的樹對訓練資料的預測很準確,但是對於末知的資料分類卻很差,這就產生過擬合的現象。決策樹剪枝過程是從已生成的決策樹上裁掉一些子樹或者葉節點。

16.5 CART模型

分類與迴歸樹(CART)模型也是一種決策樹模型。它即可以用於分類,也可以用於迴歸。迴歸生成樹採用平方誤差最小化策略,分類生成樹採用基尼指數最小化策略。

16.5.1 基尼指數

基尼指數表示在樣本中一個隨機選中的樣本被分錯的概率。Gini指數越小表示集合中被選中的樣本被分錯的概率越小,也就是說集合的純度越高,反之,集合越不純。即:基尼指數(基尼不純度)= 樣本被選中的概率*樣本被分錯的概率。公式為:

     表示選中的樣本屬於k類別的概率,則這個樣本被分錯的概率是(1-)。樣本集合中有K個類別,一個隨機選中的樣本可以屬於這k個類別中的任意一個,因而對類別就加和。樣本集合D的Gini指數(假設集合中有K個類別)則:

16.5.2 CART演算法