詳細解釋
測試集(Test Set)是用於最終評估機器學習模型泛化性能的數據子集,在整個開發過程中只使用一次。
與其他數據集的區別:
- 訓練集:調整模型參數(權重)
- 驗證集(驗證集):選擇超參數和模型
- 測試集:最終性能評估,模擬真實世界部署
為何只用一次:
- 防止信息洩漏:多次使用會導致模型間接「看到」測試數據
- 真實性能估計:確保評估反映模型在全新數據上的表現
- 模擬部署:部署時模型面對的就是全新的、未見過的數據
劃分原則:
- 隨機劃分:確保訓練/驗證/測試同分布
- 時間劃分:對於時間序列,用最新數據作為測試集
- 分層抽樣:保持類別比例一致
- 數據隔離:測試集絕對不能用於任何訓練或調參決策
測試集洩露的常見錯誤:
- 用測試集選擇模型:導致過度樂觀的估計
- 預處理時使用全部數據:標準化統計量應只從訓練集計算
- 反覆測試不同模型:多次評估等同於用測試集訓練
- 早停時監測測試集:應該用驗證集決定何時停止
大小考量:
- 小數據集:可能犧牲測試集大小(如20%)
- 大數據集:1-5%可能就足夠(如100萬樣本中取1萬)
- 統計顯著性:確保測試集夠大以檢測性能差異
測試集是模型評估的最終裁判,必須嚴格保護其純潔性。