[TOC] 更新、更全的《機器學習》的更新網站,更有python、go、數據結構與算法、爬蟲、人工智能教學等着你:http://www.javashuo.com/article/p-vozphyqp-cm.htmlhtml
爲了解決決策樹ID3算法的不足,ID3算法的做者昆蘭基於它的不足改進了決策樹ID3算法。可是可能會有人有疑問,既然上一個決策樹算法叫作ID3算法,爲何改進版本不叫作ID4或者ID5呢?由於當時決策樹過於火爆,有人二次創新把ID四、ID5都用掉了,由此做者另闢蹊徑把ID3算法的改進版本稱爲C4算法,後來C4算法又一次升級便有了如今的C4.5算法。python
上一次說到決策樹ID3算法有4個缺點,而此次做者也是基於這4個缺點改進了算法,也就是如今的C4.5算法。算法
假設現有一個訓練集$D$,特徵集$A$,訓練集中有$m$個樣本,每一個樣本有$n$個特徵,咱們經過該訓練集聊一聊做者對C4.5算法作了哪些改進。數據結構
ID3算法的第一個缺點:沒有考慮到連續值的狀況。機器學習
假設現有一個特徵$F$的特徵值爲連續值,從大到小排序爲$f_1,f_2,\ldots,f_m$,C4.5算法對相鄰樣本間的特徵值$f_i,f_{i+1}$取平均數,一共能夠獲得$m-1$個劃分點,其中第$j$個劃分點能夠表示爲學習
對於這$m-1$個劃分點,分別計算以該點做爲二元分類點的信息增益比,選擇信息增益比最大的點做爲該連續特徵的二元離散分類點,把改點記做$f_t$,則特徵值小於$f_t$的點記做$c_1$;特徵值大於$f_t$的點記做$c_2$,這樣就實現了連續特徵值的離散化。優化
ID3算法的第二個缺點:以信息增益做爲劃分訓練數據集的特徵,存在於偏向於選擇取值較多的特徵的問題。網站
信息增益做爲標準容易偏向於取值較多的特徵,所以可使用信息增益比做爲劃分節點的標準。信息增益比的概念已經在《熵和信息增益》一文中介紹過,這裏只給出公式人工智能
因爲特徵越多的特徵對應的特徵熵$H_A(D)$越大,則信息增益比$g_R(D,A)$則會變小,所以能夠校訂信息增益容易偏向於取值較多的特徵的問題。htm
ID3算法的第三個缺點:沒有考慮過擬合問題。
決策樹通常採用剪枝的方法解決過擬合問題,剪枝的具體思路將在**《CART樹》**一文中細講。
ID3算法的第四個缺點:沒有考慮特徵中含有缺失值的狀況。
假設某個特徵$F$有2個特徵值$f_1,f_2$,先設定缺失$F$特徵的樣本$D_i$的關於特徵$F$的特徵值權重都爲1,即$f_1$和$f_2$。假設$2$個特徵值對應的完好失值的樣本個數爲$3$和$5$,如今把特徵值$f_1,f_2$從新劃入樣本$D_i$中,在樣本$D_i$中$f_1$的權重調節爲${\frac{3}{8}}$,$f_2$的權重調節爲${\frac{5}{8}}$,即樣本$D_i$的特徵$F$的特徵值爲${\frac{3}{8}}*f_1和{\frac{5}{8}}*f_2$。
計算樣本$D_i$的特徵$F$的信息增益比的時候,及計算${\frac{3}{8}}*f_1$和${\frac{5}{8}}*f_2$的信息增益比。
假設現有一個訓練集$D$,特徵集$A$,閾值$\epsilon$。
C4.5算法決策樹。
決策樹C4.5算法流程上和決策樹ID3算法截然不同,只是在決策樹ID3算法上的某一步流程進行了優化,總而言之,它這種處理方式仍是治標不治本的,而且仍是沒法處理迴歸問題。
接下來咱們將要將一個改革意義的決策樹,目前scikit-learn算法中以及集成學習中都使用該樹做爲目標決策樹,即決策樹CART算法。