← M03 機器學習入門 M03 機器學習入門

M03.10|模型選擇與調參:沒有最好的模型,只有最適合的

No Free Lunch — 沒有一個模型能贏所有比賽

L1-AI基礎知識-模型選擇 L2-AI技術應用-超參數調校
🇺🇸 DOL AI Literacy 🔍 探索 AI 應用 🔄 敏捷設計
模型選擇 超參數調校 No Free Lunch 集成學習 AutoML
📋

本講學習重點

No Free Lunch 定理說什麼?
選模型的四個標準是什麼?
網格搜尋和隨機搜尋差在哪?
集成學習有哪幾種?
AutoML 適合什麼場景?

No Free Lunch(NFL)定理:沒有任何一個機器學習演算法在所有問題上都表現最好。 選模型必須根據具體問題的特性,沒有放諸四海皆準的最佳演算法。 四個模型選擇標準(需根據業務需求加權): 1. 準確率(Accuracy)— 預測表現 2. 可解釋性(Interpretability)— 法規、溝通、信任 3. 速度(Speed)— 訓練速度 vs 推論速度 4. 資料規模(Data Size)— 小資料 vs 大資料各有適合的演算法 三種超參數調校方法: - 網格搜尋(Grid Search):窮舉所有組合,保證找到格子內最優,但慢 - 隨機搜尋(Random Search):隨機取樣,效率更高,適合高維超參數空間 - 貝葉斯最佳化(Bayesian Optimization):根據前幾次結果智慧選下一個,效率最高 集成方法(Ensemble Methods): - Bagging(如隨機森林):多個模型獨立訓練,投票/平均,降低變異數 - Boosting(如 XGBoost、LightGBM):模型串聯,後面的專門修前面的錯誤,降低偏差 - Stacking:用一個元模型學習如何組合各基礎模型的預測 AutoML:自動化特徵工程、模型選擇、超參數調校,適合快速原型,非萬能

📌 No Free Lunch 定理提醒我們:模型選擇沒有捷徑,必須結合業務需求(準確率、 可解釋性、速度、資料規模)評估每個演算法的適配性。 超參數調校從網格搜尋到貝葉斯最佳化逐步提升效率; 集成學習則透過組合多個模型突破單一模型的瓶頸。 AutoML 降低了入門門檻,但不能取代領域知識和業務判斷。
模型選擇與調參:沒有最好的模型,只有最適合的

🎙️ Podcast(中文)

0:00 / 0:00

一句話搞懂

沒有任何一個機器學習模型能在所有問題上都表現最好——這是數學上可以證明的定理,叫做 No Free Lunch。選擇模型不是找「最強的」,而是找「最適合你問題的」,再透過超參數調校讓它發揮最大潛力。


白話解說

No Free Lunch 定理:為什麼不存在萬能模型

1996 年,Wolpert 和 Macready 從數學上嚴格證明了一個反直覺的結論:

如果把所有可能的問題平均來看,任何兩個演算法的平均表現是一樣的。

換句話說,若你用演算法 A 和演算法 B 跑遍所有可能的資料集,它們的平均準確率是相等的。任何在某些問題上表現優秀的演算法,必然在其他問題上表現相對差。

用白話說:天下沒有免費的午餐——你在某些問題上得到的好處,是以在其他問題上表現更差為代價的。

No Free Lunch 定理的實際意涵不是「所有演算法一樣爛」,而是:

  1. 不存在能在所有問題上通吃的萬能演算法
  2. 每個演算法都對特定類型的問題有隱含假設(Inductive Bias)
  3. 選擇演算法必須根據你的具體問題特性,而非根據某個演算法「聽起來很厲害」
問題 A(線性可分):  邏輯回歸 > 神經網路 > 隨機森林
問題 B(高維稀疏文字):SVM > 隨機森林 > 邏輯回歸
問題 C(大量圖片分類):神經網路 > SVM > 邏輯回歸
問題 D(小資料集):  決策樹 > 神經網路 > XGBoost

這四個問題的「最佳演算法」完全不同。No Free Lunch 定理告訴你:選錯演算法,再怎麼調參也是徒勞。


四個模型選擇標準

實際工作中,選擇模型不只看「準確率」。以下四個維度缺一不可:

1. 準確率(Accuracy / Performance)

預測的品質指標,包含準確率、精確率、召回率、F1、AUC-ROC 等(參見 M03-09 混淆矩陣篇)。

但高準確率不等於好模型: 一個訓練準確率 99%、測試準確率 65% 的模型,不如訓練準確率 85%、測試準確率 83% 的模型穩健。泛化能力才是關鍵。

2. 可解釋性(Interpretability)

模型能否對使用者解釋「為什麼做出這個預測」。

場景 可解釋性要求 適合的模型
銀行信貸審核 極高(法規要求說明理由) 邏輯回歸、決策樹
醫療輔助診斷 高(醫生需要理解依據) 決策樹、規則系統
推薦系統 中(可解釋但不強制) 隨機森林、XGBoost
圖片辨識 低(結果比解釋重要) 深度神經網路

台灣金管會對 AI 輔助信貸決策有明確規範:若 AI 拒絕申貸,必須提供具體理由。這直接限制了可選的模型類型。

3. 速度(Speed)

速度分為兩個不同的維度,常被混淆:

維度 意義 影響場景
訓練速度 建立模型需要多少時間 資料更新後多久能重新訓練?能否每日更新?
推論速度 對新樣本做一次預測需要多少時間 即時決策(毫秒級)vs 批次處理(分鐘級)

案例:信用卡詐騙偵測要求毫秒內給出答案(因為交易需要即時核准),因此推論速度極為關鍵,不適合需要複雜計算的模型;而每週重新訓練一次的房價預測模型,訓練速度幾乎不重要。

4. 資料規模(Data Size)

不同演算法對資料量有截然不同的要求:

資料量 適合的演算法 原因
極少(< 500 筆) 邏輯回歸、SVM、決策樹 參數少,不容易過擬合
中型(500–10 萬筆) 隨機森林、XGBoost、SVM 集成方法開始發揮優勢
大型(10 萬–百萬筆) XGBoost、LightGBM、淺層神經網路 需要能高效處理大量資料的框架
超大型(> 百萬筆) 深度神經網路、分散式訓練 神經網路隨資料量增加持續改善

直覺理解:神經網路就像一個需要大量練習才能發揮潛力的學生;決策樹就像一個少量例子就能歸納規則的聰明人——但資料一多,學習能力強的神經網路就能超越它。


超參數調校三種方法

超參數(Hyperparameter)是訓練前由人工設定的「學習規則」,如學習率、決策樹深度、神經網路層數。正確的超參數能讓模型表現提升 10–30%,錯誤的設定則可能讓模型完全失效。

做法:列出每個超參數的所有候選值,窮舉所有組合,逐一評估。

假設要調整兩個超參數:
  - 學習率(learning_rate):[0.01, 0.05, 0.1]
  - 最大深度(max_depth):[3, 5, 7, 9]

網格搜尋會嘗試所有 3 × 4 = 12 個組合:
  (0.01, 3), (0.01, 5), (0.01, 7), (0.01, 9),
  (0.05, 3), (0.05, 5), (0.05, 7), (0.05, 9),
  (0.10, 3), (0.10, 5), (0.10, 7), (0.10, 9)

每個組合配合 5 折交叉驗證 = 60 次訓練

優點:系統性,保證找到格子內的最優組合,結果可重現。 缺點:超參數維度增加時,計算量指數爆炸(10 個超參數各 5 個候選值 = 5¹⁰ 次)。

適合場景:超參數數量少(2–3 個)、每次訓練速度快(數秒到數分鐘)。

做法:從超參數的範圍中隨機取樣若干組合(例如取 50 組),評估這 50 組的表現,選出最佳。

學習率:從 [0.001, 0.5] 均勻隨機取樣
最大深度:從 {3, 4, 5, ..., 15} 隨機取樣
隱藏層數量:從 {1, 2, 3, 4, 5} 隨機取樣
L2 正則化強度:從 [0.0001, 1.0] 對數均勻取樣

→ 隨機抽取 50 組組合,各跑一次驗證
→ 選出 50 次中表現最好的那一組

為什麼隨機搜尋比網格搜尋更有效率?

Bergstra & Bengio(2012)在論文中證明:在大多數情況下,某些超參數對最終結果的影響遠大於其他超參數(重要超參數只佔少數)。

  • 網格搜尋:在不重要的超參數上浪費大量試驗次數
  • 隨機搜尋:每次試驗都在所有超參數上探索不同值,重要超參數被更密集地採樣

適合場景:超參數數量多(4 個以上)、超參數空間大(連續範圍),或計算資源有限時。

方法三:貝葉斯最佳化(Bayesian Optimization)

做法:不是盲目搜尋,而是用「代理模型」(Surrogate Model)根據前幾次試驗的結果,智慧地預測哪個超參數組合最可能好,優先嘗試最有希望的方向。

第 1 次試驗:隨機選一組 → 結果 F1 = 0.72
第 2 次試驗:隨機選一組 → 結果 F1 = 0.75
第 3 次試驗:隨機選一組 → 結果 F1 = 0.68
...
第 5 次試驗:代理模型預測最有機會的組合 → 結果 F1 = 0.81
第 6 次試驗:根據第 5 次結果更新代理模型,再預測 → 結果 F1 = 0.83

代理模型不斷更新對「超參數空間」的認識,聚焦在表現好的區域探索。

優點:每次試驗都比前一次更有針對性,達到同等效果所需的試驗次數遠少於隨機搜尋。 缺點:實作較複雜(需要 Optuna、Hyperopt 等工具);當試驗本身非常快時,貝葉斯最佳化的額外開銷反而不划算。

適合場景:每次訓練耗時很長(如深度學習,每次需要數小時),試驗次數珍貴,需要最有效率的搜尋策略。

三種方法的比較

比較項目 網格搜尋 隨機搜尋 貝葉斯最佳化
搜尋方式 窮舉所有組合 隨機取樣 智慧導向探索
找到最優的保證 格子內最優 機率性 機率性(但更高效)
計算效率 低(維度詛咒)
實作複雜度
適合超參數數量 少(1–3 個) 多(4 個以上) 多(尤其慢模型)
常用工具 sklearn GridSearchCV sklearn RandomizedSearchCV Optuna, Hyperopt

集成方法入門

單一模型有其極限。集成學習(Ensemble Methods)透過組合多個模型,往往能突破單一模型的天花板。

Bagging(Bootstrap Aggregating)

代表演算法:隨機森林(Random Forest)

原理:訓練多個獨立的模型,每個模型用訓練資料的隨機子集訓練,最終結果由所有模型投票(分類)或取平均(迴歸)。

核心效果:降低變異數(Variance),減少過擬合。

原始資料 (1000 筆)
    ↓ 隨機有放回抽樣 (Bootstrap)
樹1 (800 筆子集) → 預測: 陽性
樹2 (800 筆子集) → 預測: 陰性
樹3 (800 筆子集) → 預測: 陽性
...
樹100               → 預測: 陽性

多數決 → 最終預測: 陽性

Boosting

代表演算法:XGBoost、LightGBM、AdaBoost

原理:模型串聯訓練。第一個模型訓練完後,標出它預測錯誤的樣本;第二個模型加強學習那些錯誤的樣本;第三個模型再針對前兩個模型的殘差學習……以此類推。

核心效果:降低偏差(Bias),讓弱分類器集合成強分類器。

模型1 → 預測值(有誤差)
          ↓
模型2 → 學習「模型1的預測誤差」
          ↓
模型3 → 學習「模型1+2的預測誤差」
          ↓
...
最終預測 = 所有模型預測值的加權總和

XGBoost 在 2014–2020 年間幾乎贏得了所有機器學習競賽,成為結構化(表格)資料的標準配備。

Stacking(堆疊集成)

原理:用第一層(基礎模型)做預測,再用第二層的「元模型」(Meta-Model)學習如何最優地組合第一層的預測。

原始特徵
    ↓
層一:邏輯回歸預測 → 0.73
     隨機森林預測 → 0.81
     SVM 預測    → 0.69
    ↓
層二:元模型(線性回歸)
     輸入: [0.73, 0.81, 0.69]
     輸出: 最終預測 0.78

Stacking 比 Bagging 和 Boosting 更靈活,但實作複雜,且需要仔細防止資料洩漏(第一層訓練時必須用交叉驗證生成預測,不能直接用訓練資料)。


AutoML:自動化機器學習

AutoML 是將模型選擇、特徵工程、超參數調校等流程自動化的工具,讓沒有深度 ML 知識的使用者也能建立可用的模型。

AutoML 自動化的內容:

  • 特徵選擇與特徵工程
  • 演算法選擇(從候選池中挑最適合的)
  • 超參數調校(通常使用貝葉斯最佳化或進化演算法)
  • 集成組合(有些 AutoML 自動建立 Stacking 集成)

主要工具:

工具 開發者 特點 適合使用者
AutoKeras 台灣 keras 團隊 深度學習 AutoML 研究人員
Auto-sklearn Freiburg 大學 sklearn 生態系 資料科學家
H2O AutoML H2O.ai 企業級,GUI 業務分析師
Google AutoML Google 雲端服務,無程式碼 非技術人員
FLAML Microsoft 快速、輕量 工程師

AutoML 的限制——它不能做的事:

  • 定義問題(是分類還是迴歸?成功指標是什麼?)
  • 判斷資料品質(資料是否有偏差?有無資料洩漏?)
  • 解釋結果給業務方(為什麼這個預測對業務有意義?)
  • 決定模型是否可以部署(準確率 80% 對這個業務夠嗎?)

AutoML 最適合的場景:快速建立基線模型(Baseline),了解「這個問題大概能做到多好」,然後再根據業務需求進行深度調整。把 AutoML 當起點,而非終點。


應用場景

台灣保險業的模型選擇比較

台灣某中型保險公司(年保費收入約 80 億元)希望建立一套理賠詐欺偵測系統,針對車險理賠申請預測是否為詐欺。

業務需求分析:

  • 年申請量:約 20 萬件,詐欺率估計 0.8%(約 1,600 件)
  • 法規要求:拒絕理賠或要求進一步調查時,必須提供理由(精確率優先)
  • 即時性:理賠審核需在 72 小時內完成(無需毫秒級決策)
  • 資料:5 年歷史資料,約 100 萬筆,30 個特徵(事故類型、地點、維修廠、過去申請紀錄等)

模型選擇評估表:

模型 準確率(驗證集) 精確率 召回率 訓練時間 可解釋性 推論速度 綜合評分
邏輯回歸 91.3% 0.42 0.68 2 分鐘 極高 極快 ★★★☆☆
決策樹(深度 8) 92.1% 0.45 0.65 1 分鐘 極快 ★★★☆☆
隨機森林 96.4% 0.71 0.79 25 分鐘 中(特徵重要性) ★★★★☆
XGBoost 97.1% 0.74 0.82 18 分鐘 ★★★★★
深度神經網路 96.8% 0.70 0.81 4 小時 低(黑盒) ★★★☆☆

最終決策:採用 XGBoost + 決策樹混合架構

  1. 主力模型:XGBoost(準確率和精確率最高)用於自動過濾明顯的詐欺案件
  2. 輔助解釋:決策樹(可解釋性高)用於生成「系統認為此案件可疑的具體理由」供審核員參考
  3. 超參數調校:對 XGBoost 使用隨機搜尋(5 個超參數,每個超參數 10 個候選值,抽樣 100 組,配合 5 折交叉驗證)

調校後的效益:

  • 與調校前基線模型相比,精確率從 0.61 提升至 0.74(減少誤報 18%)
  • 每年預計攔截詐欺理賠金額:約 1.2 億元
  • 調查員工作量:系統自動標記 90% 的高風險案件,調查員只需人工複核 5%(系統判斷邊界案件),效率提升 60%

這個案例說明:模型選擇不是純粹的準確率比較,而是根據業務約束(法規、速度、可解釋性)做出有依據的工程判斷;超參數調校是從「能用」到「好用」的最後一里路。


常見誤區

誤區一:直接選準確率最高的模型,忽略其他條件

許多初學者在模型比較表中看到 XGBoost 或神經網路準確率最高,就直接選用。實際工作中,準確率只是決策因素之一。若應用場景需要向監管機構解釋決策依據(台灣金融業、醫療業普遍有此要求),選擇「準確率略低但完全可解釋」的邏輯回歸或決策樹,往往比選最高準確率但無法解釋的黑盒模型更符合業務需要。更何況,準確率 96% 和 97% 的模型在實際業務上的差距,往往比「能否解釋給稽核人員」的差距小得多。

誤區二:超參數調校在測試集上進行,或使用測試集結果決定超參數

這是超參數調校最常見的嚴重錯誤。超參數調校的每次評估都必須在驗證集(或交叉驗證)上進行,絕不能用測試集。一旦用測試集評估來選擇超參數,等於把測試集變成了「另一個驗證集」——最後報告的測試集分數是針對那組特定測試資料過度優化的結果,無法代表模型對未知真實世界資料的表現,但業務方會誤以為它是可靠的預期表現。這個錯誤在台灣常見於「競賽式思維」:為了讓 demo 結果好看而反覆用測試集調參,上線後表現卻遠不如預期。

誤區三:把 AutoML 當成萬能工具,跳過問題定義和資料理解

AutoML 讓建立模型變得容易,但它無法替你定義「好的模型是什麼意思」。若你把定義模糊的問題(如「預測客戶是否滿意」——但什麼算滿意?)丟給 AutoML,它會認真地優化你設定的指標,給出一個高分的答案——但這個答案很可能和你真正的業務目標完全脫節。更危險的是,AutoML 無法發現資料中隱藏的偏差(例如歷史資料中少數族群的系統性偏見),若不加驗證就部署,可能導致歧視性決策。AutoML 最大的價值是快速原型,而非取代對問題和資料的深入理解。


小練習

練習一:No Free Lunch 的情境應用

以下是某家台灣新創公司的兩個 AI 專案,請為每個專案推薦最適合的模型,並說明選擇理由(從準確率、可解釋性、速度、資料規模四個維度分析):

專案 A — 醫療院所的住院天數預測

  • 資料:台灣健保資料庫,300 萬筆住院紀錄,80 個特徵(診斷碼、手術項目、年齡、BMI 等)
  • 目標:預測患者住院天數(連續數值),幫助醫院床位調配
  • 限制:預測結果需要向主治醫師解釋,醫師信任感是導入關鍵

專案 B — 電商即時商品推薦

  • 資料:過去 2 年,1,000 萬筆購買紀錄,20 個使用者行為特徵
  • 目標:在使用者瀏覽頁面時(< 100 毫秒)推薦最可能購買的商品(分類問題)
  • 限制:無需解釋,以轉換率為唯一指標
看解答 **專案 A:建議採用 XGBoost + SHAP 解釋** 四維度分析: - **準確率**:300 萬筆資料、80 個特徵,XGBoost(Boosting 集成)在結構化大資料上的預測表現通常優於線性模型和單棵決策樹 - **可解釋性**:XGBoost 本身是「灰盒」,可搭配 SHAP(SHapley Additive exPlanations)值為每一次預測生成可解釋的特徵貢獻量(例如「因為糖尿病診斷碼 + 年齡 > 70,預測住院天數增加 3.2 天」),這對取得醫師信任至關重要 - **速度**:住院天數預測不需要毫秒級回應,72 小時前預測即可,訓練速度可接受 - **資料規模**:300 萬筆足以讓 XGBoost 充分發揮,但不到需要深度學習的程度 補充:邏輯回歸可解釋性更高,但在 80 個特徵的複雜非線性關係下,準確率可能不足以取得醫師信任。深度神經網路在此資料量下準確率可能相近,但可解釋性差,不符合「醫師信任」需求。 **專案 B:建議採用 LightGBM 或梯度提升樹(線上推論版本)** 四維度分析: - **準確率**:1,000 萬筆資料,LightGBM(基於直方圖的梯度提升樹)在大資料下準確率優秀且效率高於 XGBoost - **可解釋性**:此場景無需解釋,純粹追求轉換率,可解釋性不是考量因素 - **速度**:**這是最關鍵因素**。需要 < 100 毫秒推論,LightGBM 訓練的模型推論速度快(通常 1–10 毫秒),符合需求;深度神經網路推論延遲較高,且需要 GPU 加速 - **資料規模**:1,000 萬筆是 LightGBM 的甜蜜點,訓練效率高 補充:若轉換率瓶頸在於捕捉使用者行為的時序模式(如「瀏覽三件商品後通常買第四件」),可考慮加入 LSTM 或 Transformer 類的序列模型,但需要評估延遲是否仍符合 100 毫秒要求。 **核心結論**:同樣是「預測準確率」的任務,因為業務約束(可解釋性 vs 推論速度)選出了完全不同的演算法。這正是 No Free Lunch 定理在實務中的體現。

練習二:超參數調校策略選擇

某工程師小明要對一個 LightGBM 模型進行超參數調校,候選超參數如下:

超參數 候選範圍
learning_rate [0.001, 0.5](連續)
num_leaves 整數 [20, 300]
min_child_samples 整數 [10, 200]
feature_fraction [0.4, 1.0](連續)
bagging_fraction [0.4, 1.0](連續)
lambda_l1 [0.0, 10.0](連續)
lambda_l2 [0.0, 10.0](連續)

每次訓練(含 5 折交叉驗證)需要 8 分鐘,小明的時間預算是 24 小時。

請問:(1) 小明最多能嘗試幾組超參數組合?(2) 應選擇哪種調校方法?(3) 若要用網格搜尋,問題出在哪裡?

看解答 **問題 1:最多能嘗試幾組?** 24 小時 = 1,440 分鐘,每次 8 分鐘: 1,440 ÷ 8 = **最多 180 組超參數組合** **問題 2:應選擇隨機搜尋或貝葉斯最佳化** 有 7 個超參數,其中 5 個是連續範圍,無法列舉所有候選值。180 次的試驗預算相對緊張,應選擇效率較高的方法: - **推薦方法一:隨機搜尋(Random Search)** - 實作簡單(sklearn `RandomizedSearchCV`) - 對連續範圍直接隨機取樣,不需要預先離散化 - 180 次的試驗對 7 維超參數空間的探索已相當充分 - **推薦方法二:貝葉斯最佳化(Optuna)** - 每次試驗比隨機搜尋更有針對性,相同試驗次數下期望找到更好的結果 - 實作稍複雜但 Optuna 套件使用門檻低 - 由於每次訓練耗時 8 分鐘(偏長),貝葉斯最佳化的效率優勢更為顯著 **結論**:若追求最快上線用隨機搜尋;若追求最佳調校結果用 Optuna 貝葉斯最佳化。 **問題 3:網格搜尋的致命問題** 假設每個連續超參數取 5 個候選值、每個整數超參數取 10 個候選值: 5(learning_rate)× 10(num_leaves)× 10(min_child_samples)× 5(feature_fraction)× 5(bagging_fraction)× 5(lambda_l1)× 5(lambda_l2)= **781,250 組** 需要 781,250 × 8 分鐘 = 6,250,000 分鐘 ≈ **11,900 年**。 這就是超參數維度增加時「維度詛咒」的現實——網格搜尋在 7 個超參數的情況下完全不可行。隨機搜尋或貝葉斯最佳化是唯一可行的路徑。

關鍵字自我檢核

✅ No Free Lunch theorem ✅ hyperparameter tuning ✅ grid search ✅ random search ✅ Bayesian optimization ✅ ensemble methods ✅ AutoML ✅ 模型選擇標準 ✅ 調參 ✅ 機器學習流程