決策樹(Decision Tree DT)
機器學習是從給定的訓練數據集學的一個模型用於對新示例進行分類,對於決策樹而言,我們希望決策樹的分支節點所包含的樣本盡可能屬於同一類別,即結點的“純度”越高越好,這樣可以避免多次無用的分類。有多種方法來衡量純度,此處介紹信息熵和基尼系數兩種方法。
一、成樹
1.1 信息熵
假定當前訓練集合為D,D中第k類樣本(二分類問題中,k=2)所占的比例為
則D的信息熵定義為
對於不同的特征a而言,具備不同的屬性值v,按照屬性值中不同的樣本類計算該特征下的增益。
選擇最大的增益為當前所選特征進行分支。信息熵增益越大,則意味着使用該屬性進行划分所獲取的“純度”提升越大。
ID3(Iterative Dichotomiser)就是以信息增益為准則來選擇屬性划分的。考慮到信息熵增益對取值較多的屬性偏好(如編號),消除偏好帶來缺乏泛化能力這一不利影響,C4.5使用信息增益率來選擇最優划分屬性。信息增益率的定義為:
其中IV(a)為屬性a的固有值(Intrinsic Value),屬性a的取值越多(V越大),則IV越大。
1.2 基尼值
CART(Classification and Regression Tree)使用基尼指數來選擇划分屬性。直觀來說,Gini(D)反映了從數據集D中隨機抽取兩個樣本,其類別標記不一致的概率,因此Gini(D)越小,則數據集D的純度越高。
在基尼增益的計算過程中,計算方式和信息熵增益相同。
二、剪枝
對於決策樹生成產生的過擬合的狀態,具有預剪枝(prepruning)和后剪枝(postpruning)兩種策略。預剪枝:在子節點划分前先進行估計泛化性能是否提高,若無提高將當前節點標記成葉節點。后剪枝:生成整棵決策樹后,觀察刪除葉節點是否對泛化性能有提高,若提高則執行。
對於剪枝而言,一般的步驟是從訓練集中預留出驗證集驗證泛化性能。通常比較決策樹的准確度,若分類后准確度降低則不進行分類。預剪枝不僅能夠降低過擬合的風險而且還顯著減少了決策樹的訓練時間開銷和測試時間開銷。但是帶來了欠擬合的風險。預剪枝驗證該節點下的准確度,后剪枝驗證整棵樹的准確度。
三、困難
3.1 屬性值連續
此前討論的最優屬性選擇都為在連續值得情況下進行討論,對於連續的屬性而言,屬性值可取分界點后構成二分法的分類。分界點的取值同樣是兩點的中點值,對中點值進行分類增益計算后再進行比較,不像離散值,連續值在子節點上依然能夠再次進行分類。
3.2 樣本值缺失
對於訓練決策樹時訓練集存在某些特征的屬性值缺失的情況,會遇到如下兩個問題:
1.如何選擇最優屬性進行划分
2.給定划分屬性,若在該屬性上值缺失,如何確定樣本的歸屬
對於問題1而言:只要將所有的計算換成無缺樣本的數據即可。最終增益乘以對應特征所含有值的概率值,
對於問題2而言:將缺失值的樣本按照一定的比例以不同的概率划分到不同的子節點中去。若取值已知,則划分到對應的子節點中去,樣本權值在子節點中保持為wx,若取值未知,則將x同時划入所有的子節點中區,並將樣本去找你之在對應中調整為對應的比例乘以wx,權重在之后則以概率的形式體現到計算中去。
3.3 多變量決策
多變量決策樹的學習過程中,不是為每個非葉節點尋找一個最優划分屬性,而是試圖建立一個合適的線性分類器於一個節點中,減緩決策樹的復雜度。