训练集、测试集、验证集
訓練集:確定模型的參數;
驗證集:確定模型的超參數;(如多項式的次數N)
測試集:評估模型的泛化性能,選擇最優模型;
例子:色澤、根蒂、敲聲來確定好瓜還是壞瓜。將數據分成訓練集、驗證集、測試集
1、決策樹模型,選定初始預剪枝的參數值,用訓練集訓練,生成模型;改變預剪枝參數值若干次,用訓練集訓練,生成若干模型,用驗證集檢驗正確率,確定最優的預剪枝參數值;
2、多項式回歸,選定多項式次數N,用訓練集訓練,生成模型;改變多項式次數N若干次,用訓練集訓練,生成若干模型,用驗證集驗證正確率,確定最優的多項式次數N。
用測試集分別測試決策時模型和多項式模型,確定兩者的泛化性能,選擇最優模型。
下面的偽代碼寫的很清晰
摘自:http://www.sohu.com/a/159288970_465975
補充:有人說,是不是可以把驗證集和測試集合并起來,即只有訓練集和測試集,然后對于每個超參值,都用訓練集訓練出其余參數,根據測試集確定最優的超參和模型。
我個人認為這種方法不好的地方在于:超參的確定和最優模型的確定兩者在同一個步驟里完成,這樣是有風險的:超參的確定我認為實際上也是使得擬合最優,本質上還是參數的確定,而把參數確定和泛化性能檢驗合并,則依然存在過擬合的風險,而分成3個集合的話,第一步確定參數,第二部確定超參,第三部確定最優模型,這樣可以把過擬合的風險大大降低,即測試集必須在所有參數(參數和超參數)都確定的條件下才能夠使用,用來評估模型的泛化性能。否則借用測試集確定超參數,那么評估時,對于泛化性能一定是較好的。
所以對于之前提出的問題,為什么k折交叉驗證可以沒有驗證集,我認為可能是因為進行重抽樣后,泛化性能本身就可以得到檢驗了,因此驗證集和測試集只需要一個了。
————————————————————————————————————————————
最近看了《深度學習》一書中對此問題的闡述,講得還算清晰。
以最簡單的廣義線性回歸為例,有一個超參數:即多項式的次數,作為容量超參數。像lasso等回歸還有另一個超參數,控制權重衰減程度的 λ是另一個超參數。有時一個選項被設為學習算法不用學習的超參數,是因為它太難優化了。更多的情況是,該選項必須是超參數,因為它不適合在訓練集上學習。這適用于控制模型容量的所有超參數。如果在訓練集上學習超參數,這些超參數總是趨向于最大可能的模型容量,導致過擬合(參考圖5.3 )。例如,相比低次多項式和正的權重衰減設定,更高次的多項式和權重衰減參數設定 λ = 0 總能在訓練集上更好地擬合。為了解決這個問題,我們需要一個訓練算法觀測不到的 驗證集(validation set)樣本。
早先我們討論過和訓練數據相同分布的樣本組成的測試集,它可以用來估計學習過程完成之后的學習器的泛化誤差。其重點在于測試樣本不能以任何形式參與到模型的選擇中,包括設定超參數。基于這個原因,測試集中的樣本不能用于驗證集。因此,我們總是從訓練數據中構建驗證集。特別地,我們將訓練數據分成兩個不相交的子集。其中一個用于學習參數。另一個作為驗證集,用于估計訓練中或訓練后的泛化誤差,更新超參數。用于學習參數的數據子集通常仍被稱為訓練集,盡管這會和整個訓練過程用到的更大的數據集相混。用于挑選超參數的數據子集被稱為 驗證集(validation set)。通常, 80% 的訓練數據用于訓練, 20% 用于驗證。由于驗證集是用來 ‘‘訓練’’超參數的,盡管驗證集的誤差通常會比訓練集誤差小,驗證集會低估泛化誤差。所有超參數優化完成之后,泛化誤差可能會通過測試集來估計。
在實際中,當相同的測試集已在很多年中重復地用于評估不同算法的性能,并且考慮學術界在該測試集上的各種嘗試,我們最后可能也會對測試集有著樂觀的估計。基準會因之變得陳舊,而不能反映系統的真實性能。值得慶幸的是,學術界往往會移到新的(通常會更巨大、更具挑戰性)基準數據集上。
——摘自《深度學習》
通過上面的闡述應該能對訓練集、驗證集和測試集有一個比較好的了解了。
————————————————————————————————————————
參考文獻:
伊恩·古德費洛,約書亞·本吉奧,亞倫·庫維爾.《深度學習》
總結
以上是生活随笔為你收集整理的训练集、测试集、验证集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lammps数据后处理:Python O
- 下一篇: lammps教程:Ovito查看晶体内部