05 - 點解要分訓練集、驗證集、測試集?
你諗吓,要訓練一隻識分貓狗嘅模型,好似準備公開試:‣ 平時上課做練習(Training)‣ 考前做 Mock Paper(Validation)‣ 最後正式試場(Test)若果成日用同一本練習簿溫書又考試,你梗係 100 分,但一換題型即「爆燈」。數據切分就係避免「自我 感覺良好」,確保模型真係識應付陌生場景。
1️⃣ 三份數據,各司其職
訓練集:上課兼做功課
最多料嗰份,畀模型日日「抄黑板」。例如:
Uber 用過去三年行車紀錄教車隊預估到達時間。
醫院收集十萬張 X 光片訓練腫瘤偵測模型。
Spotify 用十億次播放紀錄訓練歌曲推薦。
驗證集:模擬試場,專門調參
唔參與學習,只負責「畀分」。調整嘅物件包括:
學習率應該 0.001 定 0.01?
用 3 層定 5 層?
應該加 Dropout 定 Batch-Norm?
例子:
Netflix A/B Test 兩個推薦算法,用同一批活躍用戶做驗證;
信用卡反詐部門用最新一星期交易作驗證,逐日調閾值。
測試集:正式會考,只考一次
訓練完、調 參完先打開,好似密封卷。真正反映泛化能力。分享到公司週報、論文、Kaggle Leaderboard 都睇呢份分數。實例:
自動駕駛公司用全新城市嘅路況影片做 Test;
語音助手用另一批從未出現過嘅口音做 Test。
2️⃣ 不同數據量,點樣斬?
數據量 | 建議比例 (Train / Val / Test) | 日常例子 |
< 1k | 60 / 20 / 20 | 手機 App 初創只有 500 次點擊記錄 |
10k–500k | 70 / 15 / 15 | 中型電商每月訂單 |
≥ 1M | 98 / 1 / 1 | YouTube 觀看紀錄、Twitter 帖文 |
資料多時,拎 1% 已經夠幾萬筆,統計可信;資料少,寧願縮細測試集,但最少留 50–100 筆做最終評分。
3️⃣ 分布要一致:千祈唔好「高考考英文小說」
如果訓練用單鏡頭高清貓相,測試用夜景手機渣圖,分數一定跳水——叫做 distribution mismatch。現實事故:
某醫院用白人病人影像訓練皮膚癌檢測,結果對深色皮膚病人失準。
零售商在城市分店收集數據訓練庫存預測,拿去農村店一用即爆倉。
解法:
同樣來源拍攝、同樣解析度;
若要跨域,先用 Domain Adaptation 或 Data Augmentation 把差距縮細。
4️⃣ 冇 Test 得唔得?得,但講清楚名份
早期原型只切 Train/Val,時間省,但唔能叫 Val 做 Test。否則:
老闆睇 KPI 以為 95% 精度已可上線,結果實際只得 70%。
研究論文被挑機:你啲 Test 其實早用嚟調參,唔夠客觀。
Rule of thumb:
參數未鎖定前,數據叫 Validation;
真正發 Press Release/發表 paper 前,必備獨立 Test。
5️⃣ 進階話題:K-Fold、時間序列、資料偏斜
K-Fold Cross-Validation適合少量數據:將全部資料切 K 份,輪流做 Train/Val,最後平均分。好似 10 人接力跑,每人跑九段訓練、一段驗證。
時間序列切分股票、天氣預測唔能亂 shuffle,要保留時序:Train(2018-2021) → Val(2022Q1) → Test(2022Q2)
不平衡資料詐騙 0.1%,正常 99.9%,隨機切分可能 Test 集根本冇詐騙樣本。需用 Stratified Sampling 保證每份集都包含少量正例。
6️⃣ 真實案例速覽
手機打字自動更正‣ Train:歷史鍵盤輸入 2 億行‣ Val:最新 1 天用戶樣本‣ Test:下星期發布前,抽另一日全量測試
農業無人機病蟲害偵測‣ Train:晴天高清航拍‣ Val:同一季陰天航拍‣ Test:下一季新田地,驗證跨季泛化
保險索賠欺詐檢測‣ Train:2019–2021 索賠記錄‣ Val:2022 Q1‣ Test:2022 Q2 特別挑選大型災害期間索賠,檢視最極端情況
✅ 小結:切分係 AI 專案嘅「防呆鎖」
Train:讓模型「讀書」。
Val:隨時測試調姿勢,防止「讀死書」。
Test:最後驗收,確保出得廳堂。
保持分布一致、比例合理、命名清晰,就算數據狂風暴雨,模型都企得穩。掌握呢幾招,你就踏入專業 Data Scientist 嘅門坎,可以放心同老闆、評審、用戶交代——「呢個分數,真材實料!」📊🚀