训练集(training)、验证集(validation)和测试集(test)
生活随笔
收集整理的這篇文章主要介紹了
训练集(training)、验证集(validation)和测试集(test)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
0.什么是訓練集、驗證集和測試集?
- 訓練集(train):訓練模型
- 驗證集(val):評估模型
- 測試集(test):一旦找到了最佳參數,就開始最終訓練
使用訓練集訓練多個網絡模型,再使用驗證集測試這些網絡,找到得分最高的那個網絡作為我們選擇的最佳網絡,再將訓練集和驗證集合并,重新訓練這個最佳網絡,得到最佳網絡參數。
打個比方:我們現在有個任務,但是解決這個任務的網絡有網絡A、網絡B和網絡C,如何找到效果最好的哪個?
對于train、validation和test的區分有簡單留出、K折驗證和重復K折驗證三種,具體如下:
1. 簡單留出驗證的偽代碼
num_validation_samples=10000 # 驗證集樣本數 np.random.shuffle(data) # 通常需要打亂數據calidation_data=data[:num_calidation_samples] # 定義驗證集data=data[num_calidation_samples:] # 截取剩余數據給變量data training_data=data[:] # 定義訓練集:相當于換個名字,實屬疑惑,感覺走彎路model=get_model() model.train(training_data) # 用train訓練model validation_score=model.evaluate(validation_data) # 用val驗證得分現在假設你已經選好了網絡模型,開始訓練最終模型
總結
以上方法簡單易理解,但是缺點也明顯:
- 如果樣本數量太少,驗證集和測試集更少,無法在統計學上代表數據
- 劃分數據前時,進行不同的隨機打亂則得到的模型性能差別可能很大
解決以上問題的方法有一下兩種:
- K折驗證
- 重復的K折驗證
2. K折驗證
如上,當我們不確定多個模型哪個更好時,通過K折驗證找到loss最小的。
K折驗證時將數據劃分為大小相同的K個分區。對于每個分區i,在剩余的K-1個分區上訓練模型,然后再分區i上評估模型。最終分數等于K個分數的平均值。
3. 重復K折驗證
如果可用數據相對較少,而你又需要盡可能精確評估模型,可以選擇帶有打亂數據的重復K折驗證:多次使用K折驗證,在每次使用K折驗證前都先將數據打亂,最終分數時每次K折驗證分數的均值(K折驗證分數又是每折的均值)。
總結
以上是生活随笔為你收集整理的训练集(training)、验证集(validation)和测试集(test)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 备战2022年5月软考高项 —— 信息系
- 下一篇: html里面判断字段显示,HTML特殊字