1. 程式人生 > >決策樹學習基本演算法

決策樹學習基本演算法

輸入
訓練集D={(x1,y1),(x2,y2),…(xm,ym)};
屬性集A={a1,a2,…ad}.
過程:函式TreeGenerate(D,A)

  1. 生成結點node;
  2. if D中樣本全屬於同一類別C:
    將node標記為C類葉結點;
    遞迴返回
    end if
  3. if A=空集 或 D中樣本在A上取值相同:
    將node標記為D中樣本數(當前結點)最多的類(成為葉結點);
    遞迴返回
    end if
  4. 從A中選擇最優劃分屬性a*
  • a*=argmax Gain(D,a)
    [最大化資訊增益,偏好可取值數目較多的屬性 ]
  • a*=argmax Gain_ratio(D,a)
    [ 最大化資訊增益率,偏好可取值數目較少的屬性]
  • a*=argmin Gini_index(D,a)
    [最小化基尼指數]
  1. for a* 的每個值 a‘* do
    為node生成一個分支;令Dv表示D中在a*上取值為a’*的樣本子集
    if Dv為空:
    將分支結點標記為D中樣本數(父結點)最多的類(成為葉結點);
    遞迴返回
    else
    以TreeGenerate(Dv,A{a*})為分支結點
    end if
    end for

輸出
以node為根結點的一棵決策樹