AI時代系列(2) 機器學習三部曲: 🔹 第二部:《深度學習 —— 神經網路的革命》
9/100 第一週:深度學習基礎入門
9.訓練、驗證與測試資料切分 📂 別讓模型偷看到答案!
_______________________________________
✅ 核心概念:
機器學習的關鍵目標是泛化能力,也就是模型在「從未見過的資料」上也能做出準確預測。為了評估模型是否真的學得好,我們必須將資料切分成:
• 訓練集(Training Set):用來學習權重與偏差
• 驗證集(Validation Set):用來調整參數與早停
• 測試集(Test Set):模擬最終實戰表現,完全不能用來訓練!
📌 一句話總結:
資料不切分,模型就會「作弊」學到答案,失去實戰價值!
________________________________________
✅ 三種資料集的作用比較:
在機器學習中,資料集通常分為三種:訓練集、驗證集與測試集。訓練集是用來讓模型學習與反覆調整參數的資料,參與訓練與調參,但不反映最終效能;驗證集則用來幫助選擇最佳模型架構與超參數組合,不參與訓練,但用來調參;測試集則完全不參與訓練與調參,專門用來評估模型在未見資料上的最終表現,是衡量模型泛化能力的關鍵依據。
________________________________________
✅ 常見切分比例:
模型任務 訓練 / 驗證 / 測試比例建議
標準應用 60% / 20% / 20%
小型資料 70% / 15% / 15%
超大資料 98% / 1% / 1%
📌 注意:驗證集 ≠ 測試集!不能「訓練用完就測試」,否則結果會過於樂觀。
________________________________________
✅ 資料切分實作(以 Python 為例):
python
from sklearn.model_selection import train_test_split
# 假設有資料 X, 標籤 y
X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.4, random_state=42)
X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=42)
📂 結果:
• 60% → 訓練集
• 20% → 驗證集
• 20% → 測試集
這段程式碼使用 train_test_split 將原始資料集 X 和標籤 y 按照 6:2:2 的比例分成訓練集、驗證集與測試集。首先將 40% 的資料從原始資料中切出作為臨時集(X_temp、y_temp),再將這 40% 平均分為驗證集與測試集各 20%。這種分法有助於模型訓練、調參與評估的分工清晰,確保每個階段使用獨立資料,提升模型泛化能力。
________________________________________
✅ K-Fold 交叉驗證(進階補充)
當資料集太小,不容易切出穩定的驗證集時,可以使用 K-Fold Cross Validation:
📌 做法:
1. 將資料平均分成 K 份
2. 每次選其中一份當驗證,其餘當訓練
3. 重複 K 次,平均各次結果
📌 優點:
• 適合小資料集
• 評估結果更穩定、不偏頗
________________________________________
✅ 小結與啟示 💡
✅ 訓練、驗證、測試資料切分 = AI 模型訓練的三道防線
✅ 驗證集幫助「調參」,測試集才是「真正考試」
✅ 資料切得好,模型才學得真、測得準
✅ 千萬別偷看答案,否則你只是在自我欺騙!