學習日誌-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\)
- 將 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\)
- 將分支節點標記為葉結點,其類別標記為 \(D\)
- 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) \]在選擇基尼指數最小的屬性作為最優化分。
-
-
-
剪枝處理
防止決策樹學習演算法“過擬合”
基本策略分為 預剪枝 和 後剪枝
- 預剪枝:指在決策樹生成過程中,對每個結點在劃分前先進行評估,若當前結點的劃分不能帶來決策樹泛化效能的提升,則停止劃分並將當前節點標記為葉結點。
- 後剪枝:先從訓練集生成一顆完整的決策樹,然後自底向上地對非葉結點進行考察,若將該結點對應的子樹替換為葉結點能帶來決策樹泛化能力的提升,則將該子樹替換為葉結點。
-
連續與缺失值
- 連續值處理
- 上述決策樹處理過程是基於離散屬性的,在現實問題中常遇到連續值,對此需要將連續屬性離散化
- 最簡單的方法是採用二分法對連續屬性進行處理
- 缺失值處理
- 現實中偵測到的樣本資料資訊可能存在不完整的情況,為了能夠儘量使得樣本資訊能夠儘量被使用,需要對缺失值進行處理
- 連續值處理