---
# System prepended metadata

title: 資料的劃分 - 訓練集、驗證集、測試集
tags: [李宏毅, 入門基礎, 機器學習]

---

## 訓練集 v.s. 驗證集 v.s. 測試集的差別
以下是 GPT-4O 對於訓練集、驗證集與測試集的介紹
1. 訓練集（Training set）
在訓練過程中，調整模型的權重、學習特徵，以便更好地擬合訓練資料。
->學生在上課時學習知識的過程。
2. 驗證集（Validation set）
取自一部分的訓練集作為驗證集，調整模型的超參數、初步評估模型的能力。
->學生在完成作業或模擬考試時，檢視自己的學習成果。
3. 測試集（Tetsing set）
在訓練與驗證完成後，用於評估模型在全新資料上的表現，測試模型的泛化能力。。
->學生參加學測等大考時的測驗，用來評估最終的學習狀況。

![image](https://hackmd.io/_uploads/SyfGC8d4A.png)

## 資料的劃分方法？
以下介紹兩種常用的資料劃分方法，分別是 Holdout validation 與 k-fold cross validation
### 1. Holdout method

Step1. 將整個資料集分為訓練集、驗證集、測試集（如70%/15%/15%）
Step2. 使用不同的機器學習演算法來訓練各種模型
Step3. 從驗證集上選擇表現最佳的模型
Step4. 在測試集上，測試該模型的最終能力

### 2. k-fold cross validaiton
在 k-fold 的方法中，將資料切分為 k 等份，其中 k 是可以自行調整的，從下圖中可以看到，如果 k=3 也就是將訓練集切分成三等份，將二等份作為訓練資料、一等份作為驗證集，模型依序訓練共三次，最後把在驗證集上的 Error 例如 Mean Square Error（MSE） 全部加總並平均，即可當作對模型的評估方式。

![image](https://hackmd.io/_uploads/SJzJ2LiER.png)

## 綜合，機器學習步驟一次看
在前面幾篇文章中，建立了模型挑選以及模型評估的概念，若還不清楚可以回去複習「如何訓練出好模型呢？」的文章，現在也建立了資料的劃分-訓練集、驗證集、測試集，能把機器學習的流程視為以下幾個步驟。

（前面還省略了收集資料、資料預處理等步驟...）
Step1. 整個數據集劃分成訓練集、驗證集、測試集
Step2. 模型在訓練集上學習並「自動」調整參數（parameteres）
Step3. 在驗證集上初步評估模型並「手動或自動」調整超參數（hyperparameters）
Step4. 訓練結束後的模型在測試集上預測結果並評估泛化能力

其中，介紹了一個新名詞為「超參數（Hyperparameters）」，該數值是在訓練模型前就先自行設定完成，例如 batch size、learning rate 等；一般模型參數（parameters）是在訓練過程中根據訓練資料自動調整，例如權重（wieghts）、偏差（bias）等。

切記，如果不斷的使用驗證集和測試集會使其失去效果，也就是使用相同數據來決定超參數的設定或模型改進的次數越多次，即使在驗證集和測試集上表現優異，對模型的泛化能力而言（generalization）可能沒有太大的幫助。

## 總結
在機器學習領域，必須清楚了解自己面對的問題屬於哪一種，例如分類或迴歸，對應到的輸入與輸出會有不同的表現形式，再根據演算法挑選適當的模型，也在上述介紹了資料的種類以及劃分方式，最後對於模型的建構以及每種資料扮演的角色有了基本的認識。

---
:::info 
以上就是這篇文章「資料的劃分 - 訓練集、驗證集、測試集」的所有內容，第一次看的人會花比較多時間消化吸收，這是很正常的事情，若有任何問題，歡迎在下方與我聯繫、討論，接下來也會繼續分享相關文章，敬請期待。