0x01 概述
決策樹是附加概率結果的一個樹狀的決策圖,是直觀的運用統計概率分析的圖法。機器學習中決策樹是一個預測模型,它表示對象屬性和對象值之間的一種映射,樹中的每一個節點表示對象屬性的判斷條件,其分支表示符合節點條件的對象。樹的葉子節點表示對象所屬的預測結果。
0x02 決策樹案例
上圖是一棵結構簡單的決策樹,用于預測貸款用戶是否具有償還貸款的能力。貸款用戶主要具備三個屬性:是否擁有房產,是否結婚,平均月收入。每一個內部節點都表示一個屬性條件判斷,葉子節點表示貸款用戶是否具有償還能力。例如:用戶甲沒有房產,沒有結婚,月收入 5K。通過決策樹的根節點判斷,用戶甲符合右邊分支 (擁有房產為“否”);再判斷是否結婚,用戶甲符合左邊分支 (是否結婚為否);然后判斷月收入是否大于 4k,用戶甲符合左邊分支 (月收入大于 4K),該用戶落在“可以償還”的葉子節點上。所以預測用戶甲具備償還貸款能力。
0x03 決策樹的構建
決策樹算法主要是指決策樹進行創建中進行樹分裂(劃分數據集)的時候選取最優特征的算法,他的主要目的就是要選取一個特征能夠將分開的數據集盡量的規整,也就是盡可能的純. 最大的原則就是: 將無序的數據變得更加有序
總結三個常用的方法:
信息增益(information gain)
增益比率(gain ratio)
基尼不純度(Gini impurity)
- 信息增益(information gain)
- 某個事件 i 的信息量: 這個事件發生的概率的負對數
- 信息熵就是平均而言一個事件發生得到的信息量大小,也就是信息量的期望值
我們將一組數據集進行劃分后,數據的信息熵會發生改變,我們可以通過使用信息熵的計算公式分別計算被劃分的子數據集的信息熵并計算他們的平均值(期望值)來作為分割后的數據集的信息熵。新的信息熵的相比未劃分數據的信息熵的減小值便是信息增益了。
假設我們將數據集D劃分成k份,則劃分后的信息熵為
信息增益便是兩個信息熵的差值
- 增益比率(gain ratio)
增益比率是信息增益方法的一種擴展,是為了克服信息增益帶來的弱泛化的缺陷。因為按照信息增益選擇,總是會傾向于選擇分支多的屬性,這樣會是的每個子集的信息熵最小。例如給每個數據添加一個第一無二的id值特征,則按照這個id值進行分類是獲得信息增益最大的,這樣每個子集中的信息熵都為0,但是這樣的分類便沒有任何意義,沒有任何泛化能力,類似過擬合。
分裂信息的公式為:
這時候把分裂信息的值放到分母上便會中和信息增益帶來的弊端。
- 基尼不純度(Gini impurity)
基尼不純度的定義:
其中m 表示數據集D 中類別的個數, pi 表示某種類型出現的概率。
針對劃分成k個子集的基尼不純度計算公式:
對于特征選取,需要選擇最小的分裂后的基尼指數。也可以用基尼指數增益值作為決策樹選擇特征的依據。
在決策樹選擇特征時,應選擇基尼指數增益值最大的特征,作為該節點分裂條件。
0x04 決策樹的剪枝
在分類模型建立的過程中,很容易出現過擬合的現象。
過擬合是指在模型學習訓練中,訓練樣本達到非常高的逼近精度,但對檢驗樣本的逼近誤差隨著訓練次數而呈現出先下降后上升的現象。
過擬合時訓練誤差很小,但是檢驗誤差很大,不利于實際應用。
決策樹的過擬合現象可以通過剪枝進行一定的修復。剪枝分為預先剪枝和后剪枝兩種。
- 預先剪枝
預先剪枝指在決策樹生長過程中,使用一定條件加以限制,使得產生完全擬合的決策樹之前就停止生長。預先剪枝的判斷方法也有很多,比如信息增益小于一定閥值的時候通過剪枝使決策樹停止生長。但如何確定一個合適的閥值也需要一定的依據,閥值太高導致模型擬合不足,閥值太低又導致模型過擬合。
- 后剪枝
后剪枝是在決策樹生長完成之后,按照自底向上的方式修剪決策樹。后剪枝有兩種方式,一種用新的葉子節點替換子樹,該節點的預測類由子樹數據集中的多數類決定。另一種用子樹中最常使用的分支代替子樹。
預先剪枝可能過早的終止決策樹的生長,后剪枝一般能夠產生更好的效果。但后剪枝在子樹被剪掉后,決策樹生長的一部分計算就被浪費了。
0x05 參考文獻
https://www.ibm.com/developerworks/cn/analytics/library/ba-1507-decisiontree-algorithm/index.html
http://python.jobbole.com/87994/
http://blog.csdn.net/xbinworld/article/details/44660339