AI時代系列(1) 機器學習三部曲: 🔹 第一部:《機器學習 —— AI 智慧的啟航》
52/100 第六週:模型評估與優化
52. 交叉驗證(Cross-validation) 🔁 切分數據來測試模型,確保 AI 學得全面!
交叉驗證(Cross-validation)🔁
切分數據來測試模型,確保 AI 學得全面,不偏不倚!
________________________________________
🔎 一、什麼是交叉驗證?
• 交叉驗證 是機器學習中非常重要的模型評估方法
• 核心概念:把資料集切分成多份,讓模型輪流訓練與驗證,避免「剛好」學到某一組數據的特性
• 目標:檢測模型的穩健性(Robustness)與泛化能力(Generalization)
✅ 解決:
• 模型只在某一組資料上表現好
• 偏差(Bias)與過擬合(Overfitting)問題
________________________________________
🌟 二、交叉驗證為什麼重要?
• 單次切分容易運氣好或運氣差
• 避免只憑一次訓練/測試結果做結論
• 模型訓練與驗證更公平,測試結果更可靠
• 能幫助選擇最佳模型與調整最佳參數(超參數調整)
________________________________________
🛠 三、交叉驗證的常見方法
交叉驗證是評估機器學習模型穩定性與泛化能力的重要方法,其中 K-Fold Cross Validation 是最常見形式,將資料平均分為 K 份輪流驗證與訓練;Leave-One-Out (LOOCV) 則是極端版本,每次僅留 1 筆資料驗證、其餘訓練,適合資料量極少時使用;Stratified K-Fold 在 K-Fold 基礎上加入分層抽樣,確保每一折中類別分布一致,特別適合分類問題;而 Time Series Split 則維持時間順序,避免資料洩漏,專為時間序列分析設計。選擇適當的交叉驗證方法能有效提升模型評估的準確性與可靠性。
________________________________________
📈 四、以 K-Fold 為例(K=5):
假設有 100 筆資料,分成 5 份:
折數 訓練集 驗證集
Fold 1 2,3,4,5 1
Fold 2 1,3,4,5 2
Fold 3 1,2,4,5 3
Fold 4 1,2,3,5 4
Fold 5 1,2,3,4 5
✅ 最後取 5 次驗證結果的平均,作為模型的整體表現
________________________________________
📚 五、Python 實作範例(sklearn)
python
from sklearn.model_selection import cross_val_score, KFold
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
X, y = load_iris(return_X_y=True)
model = LogisticRegression(max_iter=200)
kf = KFold(n_splits=5, shuffle=True, random_state=42)
scores = cross_val_score(model, X, y, cv=kf)
print("每一折的準確率:", scores)
print("平均準確率:", scores.mean())
這段程式碼使用邏輯迴歸模型搭配 5 折交叉驗證(K-Fold Cross Validation) 評估鳶尾花(Iris)資料集的分類效果,透過 KFold 隨機將資料分成 5 份,輪流進行訓練與驗證,並以 cross_val_score 計算每一折的準確率。最終輸出每折的準確率及平均準確率,可作為模型整體表現的評估依據。此方法能有效降低單次資料切分可能帶來的偏誤,提高模型評估的可靠性與泛化能力。
✅ 範例結果輸出(依不同執行可能略有變化):
每一折的準確率: [1. 0.9667 0.9333 0.9 1. ]
平均準確率: 0.96
這表示模型在不同資料切分下表現穩定,平均準確率達到 96%,具有良好的分類能力。
________________________________________
🔄 六、交叉驗證的優點與缺點
優點 缺點
✅ 模型評估更穩健可靠 ❌ 計算成本高(尤其資料大時)
✅ 減少過擬合機率 ❌ 時間序列資料要特別小心選擇方法
✅ 適合做模型選擇與超參數調整 -
________________________________________
🎯 七、交叉驗證在實務應用的價值
✅ 選出「表現穩定」的模型,不只對訓練集好看
✅ 讓模型避免「見樹不見林」的問題,真正學會全面的資料特性
✅ 尤其適合:
• 金融風控模型
• 醫療診斷模型
• 客戶分群模型
• 所有高風險決策模型
________________________________________
📌 總結精華口訣:
交叉驗證 = 多次拆分、反覆驗證,找出真正可靠的 AI 模型!
________________________________________