交叉驗證(Cross-Validation)是一種機器學習中常用的模型評估和泛化能力測試方法,通過多次將數據分割成訓練集和驗證集,檢測模型在不同資料上的表現,以避免過擬合和選擇偏差,提高模型的穩健性。
交叉驗證的基本原理- 將數據集分成若干個子集(folds);
- 每次用其中一個子集作為驗證集,其餘子集合併做訓練集;
- 對模型進行訓練和評估,記錄性能指標;
- 重複此過程直到每個子集都做過一次驗證集;
- 將所有評估結果取平均,作為模型的最終性能估計。
常見交叉驗證方法
- k折交叉驗證(k-Fold Cross-Validation)
- 將數據分為k個互不重疊的子集,通常k=5或10最常用,
- 依次每一個子集做驗證集,其他k-1個子集做訓練,分別得出k次結果平均。
- 平衡偏差與方差,穩健度較高。
- 留一交叉驗證(Leave-One-Out Cross-Validation, LOOCV)
- 每次只拿出1個樣本作為驗證集,剩餘的所有樣本做訓練,
- 對小數據集效果好,但運算代價高。
- 分層k折交叉驗證(Stratified k-Fold)
- 保證每個折中各類別比例與整體數據一致,
- 特別適用類別不平衡問題。
- 隨機重覆交叉驗證(Repeated Random Subsampling)
- 隨機多次劃分訓練和驗證集,多次訓練和評估,結果穩定。
優點
- 提供更可靠的模型性能估計,
- 減少因訓練/驗證集劃分偶然性帶來的偏差,
- 幫助選擇最佳模型與超參數。
缺點
- 運算成本相對較高,
- 不適合非常大規模數據集(計算時間長)。
總結來說,交叉驗證是透過多次數據劃分和訓練-測試循環,來更全面評估機器學習模型泛化能力的有效方法。它是模型選擇和性能評估中的基礎環節,能大幅提升模型的穩健性和可靠性。















