1. 程式人生 > >【Machine learning】決策樹(decision tree )

【Machine learning】決策樹(decision tree )

三個問題:

  1. 怎樣選擇根節點
  2. 怎樣選擇後繼節點
  3. 什麼時候停止

(一顆決策樹=》一個分類準則=》一個模型)

基本的演算法:

對一開始提出來的三個問題進行解答:

1.選擇最優屬性

ID3:

  • 最優屬性選擇資訊增益最大的屬性來作為最優屬性
  • 設D為用類別對訓練元組進行的劃分,則D的(entropy)表示為:
  •   其中pi表示第i個類別在整個訓練元組中出現的概率,可以用屬於此類別元素的數量除以訓練元組元素總數量作為估計。熵的實際意義表示是D中元組的類標號所需要的平均資訊量。
  • 而純度(purity)是與熵成反比
  • 按屬性a劃分後的熵為:
  • 先計算出分類後每個集合的熵,再乘以權重(所佔樣本比例),再求和
  •       而資訊增益即為兩者的差值:我們選擇資訊增益最大的屬性,作為最優屬性,如果存在gain相同,則隨機選擇一個。
  • 每次都這樣選出最優屬性

ID3的侷限性:

  他對可取值數目較多的屬性有所偏好,這種偏好可能帶來不利影響

2.關於如何選擇後繼節點:

從剩餘屬性集合中按照上述方法選擇最優屬性

3.關於遞迴終止:

遞迴共有三種情況返回:

  1. 當前節點包含的樣本全屬於同一類別,無需在劃分了
  2. 當前屬性集為空,或者所有樣本在所有屬性上取值相同,無法再劃分
  3. 當前節點包含的樣本集為空,不能劃分。

針對第二種情況,將其類別設定為當前集合所含樣本最多的類別(後驗分佈)

第三種情況,將其類別設定為其父節點所含樣本最多的類別(先驗分佈)

另外補充:

4.關於剪枝:

太多分支可能導致過擬合(泛化能力弱),有兩種剪枝策略:預剪枝和後剪枝。預剪枝實在決策樹生成過程中;後剪枝是先從訓練集上成成一顆完整的決策樹,然後自底向上對飛葉子節點進行考察,若將該子樹替換為葉子節點能將泛化效能提示,則將該子樹替換為葉子節點。

對預剪枝,可能帶來欠擬合的風險,也許當前屬性不能使決策樹的泛化能力提升,但是可能這個屬性和後面的某個屬性組合起來能使泛化能力大大提升。