天天看點

機器學習: 訓練集、驗證集、測試集關系

最近在看機器學習的東西發現驗證集的(Validation set) 有時候被提起到,以時間沒明白驗證集的真正用途。

一、三個詞的定義

Training set: A set of examples used for learning, which is to fit the parameters [i.e., weights] of the classifier. 

Validation set: A set of examples used to tune the parameters [i.e., architecture, not weights] of a classifier, for example to choose the number of hidden units in a neural network. 

Test set: A set of examples used only to assess the performance [generalization] of a fully specified classifier. 

訓練集:學習樣本資料集,通過比對一些參數來建立一個分類器。建立一種分類的方式,主要是用來訓練模型的。

驗證集:對學習出來的模型,調整分類器的參數,如在神經網絡中選擇隐藏單元數。驗證集還用來确定網絡結構或者控制模型複雜程度的參數。

測試集:主要是測試訓練好的模型的分辨能力(識别率等)

顯然,training set是用來訓練模型或确定模型參數的,如ANN中權值等; validation set是用來做模型選擇(model selection),即做模型的最終優化及确定的,如ANN的結構;而 test set則純粹是為了測試已經訓練好的模型的推廣能力。當然,test set這并不能保證模型的正确性,他隻是說相似的資料用此模型會得出相似的結果。但實際應用中,一般隻将資料集分成兩類,即training set 和test set,大多數文章并不涉及validation set。 

二、如何确定以上三者的資料量?

一般需要将樣本分成獨立的三部分訓練集(train set),驗證集(validation set)和測試集(test set)。其中訓練集用來估計模型,驗證集用來确定網絡結構或者控制模型複雜程度的參數,而測試集則檢驗最終選擇最優的模型的性能如何。一個典型的劃分是訓練集占總樣本的50%,而其它各占25%,三部分都是從樣本中随機抽取。

樣本少的時候,上面的劃分就不合适了。常用的是留少部分做測試集。然後對其餘N個樣本采用K折交叉驗證法。就是将樣本打亂,然後均勻分成K份,輪流選擇其中K-1份訓練,剩餘的一份做驗證,計算預測誤差平方和,最後把K次的預測誤差平方和再做平均作為選擇最優模型結構的依據。特别的K取N,就是留一法(leave one out)。

三、針對資料偏差與資料方差的關系

偏差:描述的是預測值(估計值)的期望與真實值之間的差距。偏差越大,越偏離真實資料。

方差:描述的是預測值的變化範圍,離散程度,也就是離其期望值的距離。方差越大,資料的分布越分散。

參考連結:

http://blog.sina.com.cn/s/blog_4d2f6cf201000cjx.html

繼續閱讀