六、連續與缺失值
1、連續值處理
到目前為止我們僅討論了基於離散屬性來生成決策樹,現實學習任務中常常遇到連續屬性,有必要討論如何在決策樹學習中使用連續屬性。我們將相鄰的兩個屬性值的平均值作為候選點。
基本思路:連續屬性離散化。
常見做法:二分法(這正是C4.5決策樹算法中采用的機制)。
對於連續屬性a,我們可考察包括 n-1 個元素的候選划分集合(n 個屬性值可形成 n-1 個候選點):
利用每個候選點對數據進行划分,得到兩個子集,計算信息增益,取最大的信息增益對應作為該屬性的信息增益。
舉例:
對於數據集中的屬性“密度”,在決策樹開始學習時,根節點包含的17個訓練樣本在該屬性上取值均不同。該屬性的候選划分點集合包括16個候選值:
T密度 = {0.244,0.294,0.351,0.381,0.42.,0.459,0.518,0.574,0.600,0.621,0.636,0.648,0.661,0.681,0.708,0.746}
計算可知屬性“密度”信息增益為0.262,對應划分點0.381.
對屬性“含糖率”,其候選划分點集合也包括16個候選值:
T含糖率 = {0.049,0.074,0.095,0.101,0.126,0.155,0.179,0.204,0.213,0.226,0.250,0.265,0.292,0.344,0.373,0.418}
計算可知其信息增益為0.349,對應於划分點0.126.
類似的,計算得到的各屬性的信息增益值:
比較能夠知道紋理的信息增益值最大,因此,“紋理”被選作根節點划分屬性,下面只要重復上述過程遞歸的進行,就能構造出一顆決策樹:
有一點需要注意的是:與離散屬性不同,若當前結點划分屬性為連續屬性,該屬性還可作為其后代結點的划分屬性。
到目前為止我們僅討論了基於離散屬性來生成決策樹,現實學習任務中常常遇到連續屬性,有必要討論如何在決策樹學習中使用連續屬性。對於連續的屬性,后續進行划分屬性的時候還可以繼續使用。
2、缺失值處理
現實任務中常會遇到不完整樣本,即樣本的某些屬性值缺失。如果簡單地放棄不連續樣本,僅使用無缺值樣本來進行學習,顯然是對數據信息極大的浪費。顯然我們有必要考慮利用有缺失屬性值的訓練樣例來進行學習。
在決策樹中處理含有缺失值的樣本的時候,需要解決兩個問題:
- 如何在屬性值缺失的情況下進行划分屬性的選擇?(比如“色澤”這個屬性有的樣本在該屬性上的值是缺失的,那么該如何計算“色澤”的信息增益?)
- 給定划分屬性,若樣本在該屬性上的值是缺失的,那么該如何對這個樣本進行划分?(即到底把這個樣本划分到哪個結點里?)
以上簡單介紹了決策樹在訓練階段是如何處理有缺失值的樣本的,若測試樣本屬性也有缺失值,則:
- 如果有專門處理缺失值的分支,就走這個分支。
- 用這篇論文提到的方法來確定屬性a的最有可能取值,然后走相應的分支。
- 從屬性a最常用的分支走
- 同時探查所有的分支,並組合他們的結果來得到類別對應的概率,(取概率最大的類別)
- 將最有可能的類別賦給該樣本。
C4.5中采用的方法是:測試樣本在該屬性值上有缺失值,那么就同時探查(計算)所有分支,然后算每個類別的概率,取概率最大的類別賦值給該樣本。