決策樹是怎麼工作的:最直覺的機器學習模型從頭講起
決策樹是一種監督學習模型:模型從已標示結果的資料中學習規則,再把複雜判斷整理成可以逐層閱讀的樹。對香港機構內需要理解或評估 AI 的人來說,它的價值不只是作出預測,而是讓預測依循甚麼條件可以被直接查出來。
決策樹的基本結構
一棵決策樹由內部節點、分支和葉節點組成。每個內部節點都是一個特徵判斷條件,可寫成 if/else 形式;每條分支代表該條件的其中一個結果。資料沿樹逐步判斷,最後到達葉節點,由葉節點給出最終預測。
模型預測的類別或數值。因此,決策樹可以讀成一串連續條件:某項特徵符合甚麼門檻,便走向哪條分支;下一個節點再檢查另一項條件,直至得到結果。這種結構把整個判斷過程拆開呈現,而不是只交付一個預測答案。
在分類任務中,結果亦可以以機率形式輸出。對使用者而言,機率是預測輸出;決策樹額外提供的,是促成這個輸出的條件路徑。
訓練時如何選擇特徵與門檻
訓練決策樹時,程式會在節點中選擇一項特徵及其門檻,把資料分到不同分支。模型不是預先把所有規則寫定,而是根據分裂準則,從資料中學出適合的判斷條件。
在 scikit-learn 的 DecisionTreeClassifier 中,split criterion 是分裂準則,splitter 是分裂器。兩者都是控制分裂選擇的設定:前者提供評估候選分裂的準則,後者決定採用哪種分裂方式。具體設定會影響模型選擇哪個特徵,以及在哪個門檻切開資料。
分裂後,資料按條件進入不同分支,後續節點可繼續以相同方式學習。當樹停止分裂並形成葉節點時,該節點便保存相應的預測。預測新資料時,模型會按相同條件路徑檢查,最後把新資料歸入葉節點的結果。
樹太深為甚麼會過擬合
樹越深、節點越多,模型便有越多機會精確記住訓練資料中的細節。問題是,它可能連噪音和偶然規律也一併學進去,導致在未見過的資料上表現變差。
Google Machine Learning Crash Course 對過擬合的定義是:模型在訓練資料上表現良好,但在未見過的新資料上表現不佳。判斷時不能只看訓練結果,還要檢查模型面對新資料的表現。若兩者出現上述落差,便可能顯示模型把訓練資料記得太熟,而不是學到可泛化的規則。
控制樹的複雜度
scikit-learn 提供不同方式限制決策樹的生長。最大深度參數 max_depth 直接限制樹的最大深度,避免模型沿每條路徑加入更多分裂。剪枝(pruning)則是控制樹的複雜度的另一種手段。
另外,min_samples_split 設定一個節點至少要有多少樣本才繼續分裂;樣本不足的節點便不會按設定繼續分裂。min_samples_leaf 則設定葉節點最少要有多少樣本,限制每個最終分支所包含的資料量。
這些參數分別從樹的深度、剪枝和節點樣本數限制模型可以記住多少細節。評估時應把參數設定與訓練資料、未見資料的表現一起看,而不能只因訓練資料上的結果理想,就判斷樹已經學得足夠。
為甚麼適合合規與問責
決策樹屬於白盒模型。透過樹結構,可以直接讀出某個節點用了哪個特徵、在哪個門檻作出判斷,以及資料被分到哪一邊,最後哪個葉節點給出預測。
這種可讀性對合規與問責特別有用。當機構需要解釋某個個案為何得到某項分類或預測時,覆核者可以沿着實際條件逐層查看,而無須像面對黑盒模型那樣,只能觀察輸入與最終輸出。規則可以直接被讀出,正是決策樹在這類場景中的核心優勢。
實際評估時,可以先問:模型用了哪些特徵和門檻?路徑能否被逐步閱讀?訓練資料表現是否理想,但未見資料表現不佳?樹的深度、剪枝及節點樣本數又受到甚麼限制?這些問題把可解釋的結構與過擬合風險放在同一個檢查框架內。