經典的決策樹演算法

香橙雲子發表於2017-11-24

迴歸與分類

我們在機器學習中一直會遇到兩種問題,一種是迴歸問題,一種是分類問題。我們從字面上理解,很容易知道分類問題其實是將我們現有的資料分成若干類,然後對於新的資料,我們根據所分得類而進行劃分;而回歸問題是將現有資料擬合成一條函式,根據所擬合的函式來預測新的資料。 這兩者的區別就在於輸出變數的型別。迴歸是定量輸出,或者說是預測連續變數;分類問題書定量輸出,預測離散變數。Po一張我在知乎上看到的一張圖片,解釋的很好:

迴歸與分類區別

如何區分分類與迴歸,看的不是輸入,而是輸出。舉個例子,預測明天晴或是雨,是分類問題,而預測明天多少度,則是迴歸問題。

迴歸樹與分類樹

在決策樹中,也有迴歸樹與分類樹的概念。 在二者的區別中,迴歸樹是採用最大均方誤差來劃分節點,並且每個節點樣本的均值作為測試樣本的迴歸預測值;而分類樹是採用資訊增益或者是資訊增益比來劃分節點,每個節點樣本的類別情況投票決定測試樣本的類別。我們可以看到,這兩者的區別主要在於劃分方式工作模式。迴歸樹採用最大均方誤差這種對資料精確處理的方式,輸出連續變數,可以更好地給我們的資料進行預測;而分類樹使用一個非常寬泛的資訊增益這個變數,更好的從整體把握這個資料集的分類

資訊增益

資訊增益定義

這是資訊增益的定義。可能理解起來非常之簡單,新加的一個節點與原來系統的互資訊。也就是多考慮一個特徵值給我們整個決策環節多提供的資訊量。但是我們一定要注意資訊增益的計算過程,這裡我貼上《統計學習方法》中的例子,來給大家參考:

資料集《統計學習方法》

經典的決策樹演算法

資訊增益計算過程

在《數學之美》這本書裡,吳軍博士曾經告誡過:對於更好地判斷一件事物是正確還是錯誤,唯一方法是引入更多的資訊量。那我們對於這個判決樹,當然傾向於選擇自身不確定性更大的特徵,因為自身不確定性越大,一旦被確定下來,引入的資訊量就越多。這樣的話,對於整個系統判決更加有效。

資訊增益比

資訊增益比定義

資訊增益比,有的書也叫資訊增益率。資料比資訊增益少很多。區別就是在資訊增益的基礎上再除以一個總的熵。具體有什麼好處呢,我們在下面C4.5演算法中會提到。 不過同樣的,我們依舊最需要注意這個資訊增益比的計算過程,資訊增益我們都會計算了,這個總的熵我們與上面講的H(D)一致。再相除就得到了我們所想要的結果了。


ID3演算法

ID3演算法的核心實在決策樹上的各個節點上用 資訊增益 選擇特徵。在ID3演算法生成樹的時候,是先計算所有備選特徵的資訊增益,然後再選擇下一個節點是哪一個特徵。

在這個資訊增益的定義及公式中,我們一定要注意這個H(D)的演算法。我們求解一整個集合的熵,一般是求解 資訊增益直接影響了我們選擇什麼節點來作為下一個特徵的操作,並且設定一個閾值e,當資訊增益小於這個閾值的時候停止迴圈。 為了不影響大家理解,我將這個演算法完整的寫在這:

ID3: 輸入:訓練資料集D,特徵集A,閾值e; 輸出 : 決策樹T 1、 若D中國所有例項屬於同一類Ck,則T為單結點樹,並將Ck作為該結點的類標記,返回T; 2、 若A=空集,則T為單結點樹,並將D中的例項數最大的類Ck作為該結點的類標記,返回T; 3、 否則,計算A中各特徵對D的資訊增益,(具體怎麼計算請看我前一條關於決策樹基礎的部落格)選擇資訊增益最大的特徵Ag; 4、 如果Ag的資訊增益小於閾值e,則置T為單結點樹,並將D中例項數最大的類Ck作為該結點的類標記,返回T; 5、 否則,對Ag的每一個可能值ai;依Ag=ai將D分割為若干非空子集Di;將Di中例項數最大的類作為標記,構建子結點,由結點及其子結點構成樹T,返回T; 6、 對第i個子結點,以Di為訓練集,以A-{Ag}為特徵集,遞迴呼叫(1)~(5),得到子樹Ti,返回Ti。

為了加深大家的理解,我貼上李航著的《統計學習方法》裡面的例子:

資料集《統計學習方法》

ID3生成樹計算過程

ID3演算法只有樹的生成,並沒有對於擬合程度的控制或者是削減分支,所以該演算法產生的樹容易產生過擬合。


C4.5演算法

C4.5演算法與ID3演算法非常相似,是對其的一種改進。唯一與ID3不同的是 C4.5採用資訊增益比 而不是資訊增益來選擇特徵。

貼出C4.5演算法:

輸入:訓練資料集D,特徵集A,閾值e; 輸出:決策樹T

  1. 若D中所有例項屬於同一類Ck,則T為單結點樹,並將Ck作為該結點的類標記,返回T;
  2. 若A=空集,則T為單結點樹,並將D中的例項數最大的類Ck作為該結點的類標記,返回T;
  3. 否則,計算A中各特徵對D的資訊增益,(具體怎麼計算請看我前一條關於決策樹基礎的部落格)選擇資訊增益最大的特徵Ag;
  4. 如果Ag的資訊增益小於閾值e,則置T為單結點樹,並將D中例項數最大的類Ck作為該結點的類標記,返回T;
  5. 否則,對Ag的每一個可能值ai;依Ag=ai將D分割為若干非空子集Di;將Di中例項數最大的類作為標記,構建子結點,由結點及其子結點構成樹T,返回T;
  6. 對第i個子結點,以Di為訓練集,以A-{Ag}為特徵集,遞迴呼叫(1)~(5),得到子樹Ti,返回Ti。

我們為什麼說C4.5是對ID3的一種改進呢?這個問題我們得從二者區別也就是資訊增益與資訊增益比說起。 我們再次貼上資訊增益與資訊增益比的定義:

資訊增益定義

資訊增益比定義

通過對比我們可以看出,資訊增益就是特徵與訓練集的互資訊,或者說原來資料集的不確定性與確定其中一個特徵之後的不確定性之差,稱做資訊增益。也就是確定這個特徵所引入的資訊量。而資訊增益比則是這一個互資訊與D的不確定性的比值。

當我們遇到一個取值很多的屬性的時候,比如西瓜的品種這個屬性,會有好幾十種品種,也就是好幾十種取值。通過計算我們會發現,這類屬性的不確定性要比那些只有一兩個取值的屬性要大(因為取值很多使得整個資料集的混亂程度很大), 所以計算機如果處理的時候優先選擇取值多的屬性。

所以C4.5在ID3的基礎上,採用了資訊增益比這個判決方法,來懲罰取值很多的屬性。

相關文章