跳轉到

2.1 Train Validation Test 切分

範例程式:Open In Colab

資料切分是機器學習專案中最容易被低估的一步。模型真正要面對的是未來沒看過的資料,因此不能只看訓練集分數。本篇示範如何建立 train / validation / test 三份資料,並說明為什麼分類任務常需要 stratify。

1. 學習目標

本篇聚焦資料評估是否可信的問題。Training set 用來訓練模型,validation set 用來觀察訓練過程與調整超參數,test set 則保留到最後評估泛化能力。

2. 為什麼不能只切 train/test?

如果用 test set 反覆調整模型,測試集就會逐漸變成調參資料,最後分數會過度樂觀。比較完整的流程會先從訓練資料中切出 validation set,讓 test set 只在最後使用。

3. 分類任務為什麼常用 stratify?

分類資料若各類別比例不同,隨機切分可能讓某些類別在 validation 或 test 中太少。stratify=y 會盡量維持各資料集的類別比例,讓評估比較穩定。

4. 實作流程

Notebook 使用 Breast Cancer 二元分類資料集,示範資料切分、類別比例檢查、標準化與簡單 DNN 訓練。重點是觀察 train、validation、test 三者在流程中的角色。

5. 如何套用自己的資料?

套用時先確認目標欄位 y,其餘欄位作為 X。若是分類任務,優先使用 stratified split;若是時間序列資料,不應該隨機切分,而應該依時間順序切分。

6. 小結

資料切分會直接影響模型評估是否可信。正式專案中應該先保留 test set,再用 train/validation 完成模型選擇。