## 介紹決策樹(Decision Tree) 決策樹的核心概念源自於人類決策過程的模擬,它透過一系列的條件判斷,將複雜的問題逐步拆解,最終得出結論,這種結構類似於樹狀圖,從根節點開始,根據特徵條件分支延伸,直到葉節點給出最終的預測結果。無論是用於分類任務,例如判斷一封電子郵件是否為垃圾郵件,還是回歸任務,例如預測房價,決策樹都能提供清晰的邏輯路徑,讓使用者不僅能獲得結果,還能理解背後的決策過程。 ![image](https://hackmd.io/_uploads/SkyBbej2kl.png) ## Decision Tree Classifier 運作原理 ### Pure split vs. impure split Pure split 是指一個節點在被特徵切分後,產生的每個子節點內部只包含單一類別的資料,舉例來說,假設有一組用來預測是否喜歡貓的資料,若依據「是否對動物有過敏史」這個特徵進行劃分,可能結果如下: * 有過敏史 → 100% 樣本標記為「不喜歡貓」 * 無過敏史 → 100% 樣本標記為「喜歡貓」 這就是一個典型的 Pure split,每個分支都對應到唯一的類別,決策過程非常明確,這種情況下,節點的熵值(Entropy)或 Gini impurity 為 0,表示完全純淨,模型不需要再往下切分。 相對地,impure split 則表示劃分後的子節點中仍混有多種類別的資料,以相同例子來看,若我們依據「年齡是否大於 30 歲」來切分,可能結果如下: * 年齡 ≤ 30 → 70% 喜歡貓,30% 不喜歡貓 * 年齡 > 30 → 40% 喜歡貓,60% 不喜歡貓 這種分裂產生的子節點中仍包含不止一種類別,因此被視為不純的,此時節點的熵值(Entropy)或 Gini impurity 會大於 0,演算法可能會嘗試進一步切分這些節點,尋找更具區別性的特徵。 ### Purity 由 Entropy 以及 Gini impurity 來表示 * 熵值(Entropy)來自資訊理論,用來衡量資訊的不確定性。當一個節點中的類別非常混亂時(即每個類別的機率都接近),熵會很高;相反,當所有樣本都屬於同一類別時,熵會為 0。 * Gini Impurity 是另一種衡量節點混亂程度的指標,常用於 CART 演算法,它評估從該節點中隨機挑選兩個樣本時,它們屬於不同類別的機率。 ![image](https://hackmd.io/_uploads/HyiyOgjhke.png) 公式如下圖所示 ![image](https://hackmd.io/_uploads/B1dvrxonJl.png =100%x) ### 特徵(切分條件)如何挑選呢?Information Gain Information Gain(資訊增益)用來衡量某個特徵對分類結果的影響力,當我們建立決策樹時,演算法會計算每個可用特徵的資訊增益,然後選擇資訊增益最高的特徵作為分裂依據。 Information Gain 在特徵選擇過程中的主要步驟如下: step1. 計算資料集的總熵(Entropy) step2. 針對每個可用特徵,計算該特徵分裂後的加權熵 step3. 計算該特徵的資訊增益 step4. 選擇資訊增益最高的特徵作為分裂點 ![image](https://hackmd.io/_uploads/rJBzjxs21e.png) ## Decision Tree Regressor 運作原理 在 Decision Tree Classifier(分類決策樹) 中,我們通常使用 Entropy(熵) 或 Gini Impurity 作為純度衡量指標,並透過資訊增益(Information Gain)來選擇最佳的特徵進行分裂。然而,在 Decision Tree Regressor(回歸決策樹)中,目標是預測連續數值,因此我們不能再使用熵或 Gini Impurity,取而代之的是使用均方誤差(Mean Squared Error, MSE)或平均絕對誤差(Mean Absolute Error, MAE)或變異數(Variance)來衡量節點的不純度。 因此,與分類決策樹相比,回歸決策樹的資訊增益不再關注類別純度,而是關心數值變異的減少程度。其關鍵目標是使子節點內的數值變化範圍縮小,使預測結果更加準確。因此,回歸決策樹適用於房價預測、股票價格預測、材料特性建模等場景,尤其在數據具有明顯區間性質時,表現尤為出色。 :::info Decision Tree Claasifier 與 Decision Tree Regressor 的比較 ![image](https://hackmd.io/_uploads/B1nMeZi3yl.png) ::: ## 決策樹的優缺點 ![image](https://hackmd.io/_uploads/S1wQGZonyg.png) :::info 避免決策樹 Overfitting 1. 剪枝(Pruning) a. 預剪枝(Pre-pruning):在樹生長的過程中,透過設置最大深度(Max-depth)、最大葉節點(Max-leaf)等條件來限制樹的擴展。 b. 後剪枝(Post-pruning):在生成完整的決策樹後,然後移除對整體準確度影響不大的節點。 2. 使用集成學習(Ensemble Learning) 決策樹容易過擬合,但集成學習技術能夠透過多棵決策樹的組合來降低這個風險,有關於此項可參見此文章[集成學習(Ensemble learning): Bagging, Boosting and Stacking](https://hackmd.io/@lcaMuWOwR1Ox5o5yeTEupA/Hk9y60v0C)。 :::