測試資料集 是什麼?

Test Set:測試資料集 的完整解釋

測試資料集用於評估模型在未見過資料上的泛化能力,是模型效能的最終指標,在模型部署前使用。

容易混淆

測試資料集 vs 訓練集 測試資料集:偏向 讓模型學習、更新與驗收 訓練集:偏向 用來學習的資料 最關鍵的區別:測試資料集看的是「讓模型學習、更新與驗收」,訓練集看的是「用來學習的資料」。

測試資料集 vs 驗證資料集 測試資料集:偏向 讓模型學習、更新與驗收 驗證資料集:偏向 用來調參的資料 最關鍵的區別:測試資料集看的是「讓模型學習、更新與驗收」,驗證資料集看的是「用來調參的資料」。

記住這句就好

有答案、會更新、看泛化。

實際案例

案例:用標答案資料訓練垃圾郵件分類器 訓練時看標籤,部署時只看新郵件內容

案例:先保留一批沒看過的資料來驗收模型 這樣才能知道它是真的會做,還是只會背題

算法與應用

先看資料,再更新參數,最後看驗證或測試表現 學習率、批次大小和損失函數,常一起決定收斂速度 重點不是背熟訓練集,而是遇到新資料也能做對

中英對照與常見說法

說法 出現場合
測試集、測試資料集 台灣正式用語
测试集 簡體寫法
Test Set 英文原名
Holdout Set(保留集) 強調它被留起來不參與訓練

三個資料集各自的職責

資料集 用途 可以看幾次
訓練集(training set) 更新模型參數 每個 epoch 都看
驗證集(validation set) 選超參數、決定何時停止、比較不同模型 訓練過程中反覆看
測試集(test set) 估計最終模型在沒看過的資料上的表現 理想上只看一次

常見比例是 6:2:2 或 8:1:1,資料量很大時測試集的比例可以更小,因為幾萬筆已經足以得到穩定的估計。

驗證集與測試集不能混用,這是最關鍵的一條。拿測試集反覆調參,等於間接把測試集的資訊學進模型,最終回報的分數就不再是對未知資料的誠實估計。這種現象叫做對測試集過度擬合,即使沒有直接訓練它也會發生。

切分方式要配合資料性質

隨機切分 只在資料點彼此獨立時才正確。

時間序列必須依時間切:用過去訓練、用未來測試。隨機切等於讓模型用未來預測過去,離線分數會虛高得離譜。

有分群結構的資料要依群切:同一位病人的多張影像、同一位使用者的多筆紀錄,必須整組分到同一邊。否則模型在測試集上看到的是它訓練時已經認識的個體。

類別不平衡時要分層抽樣(stratified),保證每個切分的類別比例一致,否則稀有類別可能整批落在同一邊。

測試集的維護

測試集應該反映實際上線後會遇到的資料分布。 用兩年前的資料當測試集,估出來的分數跟今天的真實表現沒有關係。

資料量小的時候用交叉驗證取代單一切分。 K 折交叉驗證讓每筆資料都有機會當測試,估計的變異數小很多。但要注意,如果同時要調超參數,正確做法是巢狀交叉驗證,外層估效能、內層調參。

測試集用久了就該換。 同一個測試集被團隊反覆使用幾十次之後,選出來的模型已經隱含地朝它最佳化了。公開基準測試集尤其嚴重,因為整個社群都在對同一份資料調整。

情境判斷

Q1(直覺題): 資料很多又想先跑起來,這類方法適不適合? → 適合,尤其是你已經有標答案資料,想先做一版可用模型時。

Q2(判斷題): 資料很少但每一步都要很穩,這類方法一定是最佳解嗎? → 看情況,資料少時通常還要配合正則化、驗證策略或其他方法,不能只靠同一招。

相關術語

常見問題

這類方法什麼時候最值得用?

當你有標答案資料,而且想要穩定做預測、分類或評估時,最值得用。

什麼情況下要先換方法,不要硬調參?

如果資料太少、標籤品質很差,或任務本身不適合這種學習方式,先換策略通常更有效。

它和盲目背題有什麼不同?

好方法追求泛化,不是把訓練資料背熟;一旦新資料出現,還能不能做對才是重點。