1. 程式人生 > 其它 >學習日誌-2021.10.11

學習日誌-2021.10.11

學習日誌-2021.10.11

複習一下機器學習書本第四章內容

決策樹

  • 基本演算法

    這是一個遞迴的過程,有三種情況會導致遞迴返回:

    • 當前節點包含的樣本全屬於同一類別,無需劃分
    • 當前屬性集為空,或是所有樣本在所有屬性上取值相同,無法劃分
    • 當前結點包含的樣本集合為空,不能劃分

    輸入:訓練集 \(D = \{(x_1 , y_1),(x_2 , y_2),...,(x_m , y_m)\}\)

    ​ 屬性集 \(A = \{a_1 , a_2 , ... , a_d\}\)

    過程:函式 TreeGenerate( \(D\) , \(A\) )

    • 生成結點 node :
    • if \(D\) 中樣本全屬於同一類別 \(C\)
      then
      • 將 node 標記為 \(C\) 類葉結點;return
    • end if
    • if \(A = Φ\) OR \(D\) 中樣本在 \(A\) 上取值相同 then
      • 將 node 標記為葉結點,其類別標記為 \(D\) 中樣本數最多的類;return
    • end if
    • \(A\) 中選擇最優劃分屬性 \(a_*\) ;
    • for \(a_*\) 的每一個值 \(a_*^v\) do
      • 為 node 生成一個分支;令 \(D_v\) 表示 \(D\) 中在 \(a_*\) 上取值為 \(a_*^v\) 的樣本子集;
      • if \(D_v\) 為空 then
        • 將分支節點標記為葉結點,其類別標記為 \(D\)
          中樣本最多的類;return
      • else
        • 以 TreeGenerate( \(D\) , \(A\) \ \(\{a_*\}\) )為分支點
      • end if
    • end for

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

  • 劃分選擇

    • 資訊增益

      資訊熵:\(Ent(D) = - \sum_{k = 1}^{| \gamma |} p_k \log_2 p_k\)

      • \(p_k\) 為當前樣本集合 \(D\) 中第 \(k\) 類樣本所佔的比例 \((k = 1,2,...,|\gamma|)\)

      \(Ent(D)\) 的值越小,則 \(D\) 的純度越高

      資訊增益: \(Gain (D,a) = Ent(D) - \sum_{v=1}^{V} \frac{|D_v|}{|D|} Ent(D^v)\)

      ​ 假定離散值 \(a\) 有可能的取值為 \(\{ a^1,a^2,...,a^V \}\) ,使用 \(a\) 來對樣本集進行劃分,則會產生V個分支結點。

      • \(D^v\) 表示第 \(v\) 個分支包含了 \(D\) 中所有在屬性 \(a\) 上取值為 \(a^v\) 的樣本
      • $ \frac{|D_v|}{|D|} $ 表示分支結點的權重

      一般而言,資訊增益越大,意味著使用屬性 \(a\) 來進行劃分所獲得的“純度提升”越大。

    • 增益率

      \[Grain_ratio (D,a) = \frac{Gain(D,a)}{IV(a)} \]

      其中

      \[IV(a) = - \sum_{v=1}^{V} \frac{|D_v|}{|D|} \log_2 \frac{|D_v|}{|D|} \]
      • \(IV(a)\) 成為屬性 \(a\) 的“固有值”。屬性 \(a\) 的可能取值數目越多,則 \(IV(a)\) 的值通常越大。
    • 基尼指數

      • 基尼值

        \[Gini(D) = \sum_{k=1}^{|\gamma|} \sum_{k'≠k} p_k p_{k'}=1-\sum_{k=1}^{|\gamma|}p^2_k \]

        直觀來說,\(Gini(D)\) 反映了從資料集 \(D\) 中隨機抽取兩個樣本,其類別標記不一致的概率。即,\(Gini(D)\) 越小,則資料集 \(D\) 的純度越高。

      • 基尼指數

        \[Gini \_ index (D,a) = \sum_{v=1}^{V} \frac{|D^v|}{|D|} Gini(D) \]

        在選擇基尼指數最小的屬性作為最優化分。

  • 剪枝處理

    防止決策樹學習演算法“過擬合”

    基本策略分為 預剪枝 和 後剪枝

    • 預剪枝:指在決策樹生成過程中,對每個結點在劃分前先進行評估,若當前結點的劃分不能帶來決策樹泛化效能的提升,則停止劃分並將當前節點標記為葉結點。
    • 後剪枝:先從訓練集生成一顆完整的決策樹,然後自底向上地對非葉結點進行考察,若將該結點對應的子樹替換為葉結點能帶來決策樹泛化能力的提升,則將該子樹替換為葉結點。
  • 連續與缺失值

    • 連續值處理
      • 上述決策樹處理過程是基於離散屬性的,在現實問題中常遇到連續值,對此需要將連續屬性離散化
      • 最簡單的方法是採用二分法對連續屬性進行處理
    • 缺失值處理
      • 現實中偵測到的樣本資料資訊可能存在不完整的情況,為了能夠儘量使得樣本資訊能夠儘量被使用,需要對缺失值進行處理