咱們在機器學習中一直會遇到兩種問題,一種是迴歸問題,一種是分類問題。咱們從字面上理解,很容易知道分類問題實際上是將咱們現有的數據分紅若干類,而後對於新的數據,咱們根據所分得類而進行劃分;而回歸問題是將現有數據擬合成一條函數,根據所擬合的函數來預測新的數據。 這二者的區別就在於輸出變量的類型。迴歸是定量輸出,或者說是預測連續變量;分類問題書定量輸出,預測離散變量。Po一張我在知乎上看到的一張圖片,解釋的很好:算法
如何區分分類與迴歸,看的不是輸入,而是輸出。舉個例子,預測明天晴或是雨,是分類問題,而預測明天多少度,則是迴歸問題。機器學習
在決策樹中,也有迴歸樹與分類樹的概念。 在兩者的區別中,迴歸樹是採用最大均方偏差來劃分節點,而且每一個節點樣本的均值做爲測試樣本的迴歸預測值;而分類樹是採用信息增益或者是信息增益比來劃分節點,每一個節點樣本的類別狀況投票決定測試樣本的類別。咱們能夠看到,這二者的區別主要在於劃分方式與工做模式。迴歸樹採用最大均方偏差這種對數據精確處理的方式,輸出連續變量,能夠更好地給咱們的數據進行預測;而分類樹使用一個很是寬泛的信息增益這個變量,更好的從總體把握這個數據集的分類。函數
這是信息增益的定義。可能理解起來很是之簡單,新加的一個節點與原來系統的互信息。也就是多考慮一個特徵值給咱們整個決策環節多提供的信息量。可是咱們必定要注意信息增益的計算過程,這裏我貼上《統計學習方法》中的例子,來給你們參考:學習
在《數學之美》這本書裏,吳軍博士曾經告誡過:對於更好地判斷一件事物是正確仍是錯誤,惟一方法是引入更多的信息量。那咱們對於這個判決樹,固然傾向於選擇自身不肯定性更大的特徵,由於自身不肯定性越大,一旦被肯定下來,引入的信息量就越多。這樣的話,對於整個系統判決更加有效。測試
信息增益比,有的書也叫信息增益率。資料比信息增益少不少。區別就是在信息增益的基礎上再除以一個總的熵。具體有什麼好處呢,咱們在下面C4.5算法中會提到。 不過一樣的,咱們依舊最須要注意這個信息增益比的計算過程,信息增益咱們都會計算了,這個總的熵咱們與上面講的H(D)一致。再相除就獲得了咱們所想要的結果了。3d
ID3算法的核心實在決策樹上的各個節點上用 信息增益 選擇特徵。在ID3算法生成樹的時候,是先計算全部備選特徵的信息增益,而後再選擇下一個節點是哪個特徵。cdn
在這個信息增益的定義及公式中,咱們必定要注意這個H(D)的算法。咱們求解一整個集合的熵,通常是求解 信息增益直接影響了咱們選擇什麼節點來做爲下一個特徵的操做,而且設置一個閾值e,當信息增益小於這個閾值的時候中止循環。 爲了避免影響你們理解,我將這個算法完整的寫在這:blog
ID3: 輸入:訓練數據集D,特徵集A,閾值e; 輸出 : 決策樹T 一、 若D中國全部實例屬於同一類Ck,則T爲單結點樹,並將Ck做爲該結點的類標記,返回T; 二、 若A=空集,則T爲單結點樹,並將D中的實例數最大的類Ck做爲該結點的類標記,返回T; 三、 不然,計算A中各特徵對D的信息增益,(具體怎麼計算請看我前一條關於決策樹基礎的博客)選擇信息增益最大的特徵Ag; 四、 若是Ag的信息增益小於閾值e,則置T爲單結點樹,並將D中實例數最大的類Ck做爲該結點的類標記,返回T; 五、 不然,對Ag的每個可能值ai;依Ag=ai將D分割爲若干非空子集Di;將Di中實例數最大的類做爲標記,構建子結點,由結點及其子結點構成樹T,返回T; 六、 對第i個子結點,以Di爲訓練集,以A-{Ag}爲特徵集,遞歸調用(1)~(5),獲得子樹Ti,返回Ti。遞歸
爲了加深你們的理解,我貼上李航著的《統計學習方法》裏面的例子: 圖片
ID3算法只有樹的生成,並無對於擬合程度的控制或者是削減分支,因此該算法產生的樹容易產生過擬合。
C4.5算法與ID3算法很是類似,是對其的一種改進。惟一與ID3不一樣的是 C4.5採用信息增益比 而不是信息增益來選擇特徵。
貼出C4.5算法:
輸入:訓練數據集D,特徵集A,閾值e; 輸出:決策樹T
- 若D中全部實例屬於同一類Ck,則T爲單結點樹,並將Ck做爲該結點的類標記,返回T;
- 若A=空集,則T爲單結點樹,並將D中的實例數最大的類Ck做爲該結點的類標記,返回T;
- 不然,計算A中各特徵對D的信息增益,(具體怎麼計算請看我前一條關於決策樹基礎的博客)選擇信息增益最大的特徵Ag;
- 若是Ag的信息增益小於閾值e,則置T爲單結點樹,並將D中實例數最大的類Ck做爲該結點的類標記,返回T;
- 不然,對Ag的每個可能值ai;依Ag=ai將D分割爲若干非空子集Di;將Di中實例數最大的類做爲標記,構建子結點,由結點及其子結點構成樹T,返回T;
- 對第i個子結點,以Di爲訓練集,以A-{Ag}爲特徵集,遞歸調用(1)~(5),獲得子樹Ti,返回Ti。
咱們爲何說C4.5是對ID3的一種改進呢?這個問題咱們得從兩者區別也就是信息增益與信息增益比提及。 咱們再次貼上信息增益與信息增益比的定義:
經過對比咱們能夠看出,信息增益就是特徵與訓練集的互信息,或者說原來數據集的不肯定性與肯定其中一個特徵以後的不肯定性之差,稱作信息增益。也就是肯定這個特徵所引入的信息量。而信息增益比則是這一個互信息與D的不肯定性的比值。
當咱們遇到一個取值不少的屬性的時候,好比西瓜的品種這個屬性,會有好幾十種品種,也就是好幾十種取值。經過計算咱們會發現,這類屬性的不肯定性要比那些只有一兩個取值的屬性要大(由於取值不少使得整個數據集的混亂程度很大), 因此計算機若是處理的時候優先選擇取值多的屬性。
因此C4.5在ID3的基礎上,採用了信息增益比這個判決方法,來懲罰取值不少的屬性。