1. 程式人生 > >決策樹(decision tree)的自我理解 (下) 關於剪枝和連續值缺失值處理

決策樹(decision tree)的自我理解 (下) 關於剪枝和連續值缺失值處理

對剪枝的粗淺理解

剪枝分預剪枝和後剪枝,顧名思義,預剪枝就是在樹還沒完成之前,預先剪去樹的部分分支,後剪枝就是在整棵樹完成了之後對樹剪去部分分支,從而完成了對樹的精簡操作,避免了因屬性太多而造成的過擬合。

預剪枝(prepruning):在決策樹生成過程中,對每個結點在劃分前先進行估計,若當前結點的劃分不能帶來決策樹泛化效能提升,則停止劃分,並將當前結點標記為葉節點。
後剪枝(post-pruning):先從訓練集生成一棵完整的決策樹,然後自底向上地對非葉結點進行考察,若該結點對應的子樹替換為葉結點能帶來決策樹泛化效能提升,則將該子樹替換為葉節點。


連續值處理

一般來說,決策樹處理不了具有連續值的特徵,因為具有連續值的屬性的可取值數目不再有限,因此不能直接用連續屬性的取值來進行劃分決策樹。

二分法對連續值進行處理

假設屬性a是連續屬性,將屬性a下的值從小到大排序,有{a1,a2,a3,…………an},在a(i)和a(i+1)之間取平均值,作為一個劃分結點,一共有n-1個劃分結點,因此我們以這些結點把資料集分為兩個子集,分別計算在該結點下屬性a的資訊增益,計算結果有n-1個值,在n-1個值之中選取資訊增益最大的值,以這個值的劃分點作為把連續屬性a變成2個類離散化的節點。


缺失值處理

按照我自己的理解就是  在屬性a下假如存在缺失值的話,在計算屬性a下的資訊增益或者資訊增率時,把具有缺失值的元組去掉,把具有完整值的屬性a代入計算,用去掉缺失值計算結果進行比較。