【小白學PyTorch】2 淺談訓練集和測試集

文章目錄:

經驗誤差與過擬合

關鍵詞:錯誤率(error rate),精度(accuracy)

  • 錯誤率好理解,就是m個樣本中,a個樣本分類錯誤,則錯誤率E = a/m 。
  • 精度 就是 1-E。 其實很簡單,但是爲什麼我還要提一提呢,因爲機器學習裏還有很多相關名詞,例如:準確率,召回率,精確度等等,所以希望大家能清楚認識。

關鍵詞:經驗誤差(empirical error)

  • 在訓練集上,預測輸出與樣本的真實輸出之間的差異(差異!)稱爲經驗誤差或訓練誤差。

關鍵詞:泛化誤差(generalization)

  • 在新樣本上的誤差稱爲泛化誤差。

關鍵詞:過擬合(overfitting)

  • 剛接觸機器學習時候,就碰到過擬合這個很抽象的詞, 當時是說的曲線擬合 。曲線擬合其實就是一個過程。該過程是通過實際曲線上的一些樣本點(成爲訓練樣本),經過一個模型訓練,得到一條預測曲線。(敲黑板:擬合就是一個過程)。那麼過擬合就是,擬合過頭了,預測曲線非常好的適合訓練樣本,然而對實際曲線的其他樣本不太適合。 推廣一下到分類器(模型)上就是,訓練好的分類器對訓練樣本很好的分類,但是對測試樣本的分類結果很糟糕。
    有過擬合當然有欠擬合啦,欠擬合可以認爲是該分類器學習能力太差,連在訓練樣本上都沒有很好的分類,更不要說在測試樣本上了。

評估方法

關鍵詞:留出法(hold-out)

  • 怎麼將給定的數據集劃分爲訓練集和測試集呢?常用的方法在這裏有介紹。首先介紹的是留出法,其實這種方法在國內教材和論文中最常見,就是把數據集D劃分爲兩個互斥的集合,其中一個是訓練集,一個是測試集。書中給出的參考劃分比例是,訓練集66.6%~80%。

關鍵詞:交叉驗證法(cross validation)

  • 交叉驗證法是競賽中或者比較正式的實驗中用得比較多。什麼是交叉驗證呢? 其實就是將數據集D劃分爲k個大小相同的互斥的子集,然後用k-1個子集作爲訓練,剩下那一個子集作爲測試。這樣就需要訓練k個模型,得到k個結果,再取平均即可。這樣的方法通常成爲“k折交叉驗證”。書中還給出了k的參考值,:5,10,20。

關鍵詞:自助法(bootstrapping)

  • 第一次聽說自助法,也從沒在文獻中看到過,自助法主要是用於小樣本!缺點是容易引入估計偏差。具體操作是這樣的,對於m個樣本的數據集D,每次隨機挑選D中的一個樣本放到D’中,挑m次,經過計算D中有大約36.8%(≈1/e)的樣本未出現在D’中,這樣用D’作爲訓練集,D\D’(“\”表示集合減法)作爲測試集。自助法又稱爲可重複採樣,有放回採樣。(第二次看到這個方法的時候,發現,這不就是bagging抽樣數據集的方法嘛,只是這裏作爲劃分訓練集和測試機的方法。)

關鍵詞:訓練集(train set)、驗證集(valid set)、測試集(test set)

  • 一開始接觸機器學習只知道訓練集和測試集,後來聽到了驗證集這個詞,發現驗證集和之前所認識的測試集的用法是一樣的,一直就把驗證集和測試集給混淆了。

首先需要知道的是,在工程應用中,最終提交給客戶的模型是用盡數據集D中的m個樣本訓練的模型。也就是說,我們的測試集最終還是要用來訓練模型的。之前有說到數據集D劃分爲訓練集和測試集,訓練集就是用來訓練模型,測試集是用來估計模型在實際應用中的泛化能力,而驗證集是用於模型選擇和調參的。
因此,我個人的理解是在研究過程中,驗證集和測試集作用都是一樣的,只是對模型進行一個觀測,觀測訓練好的模型的泛化能力。而當在工程應用中,驗證集應該是從訓練集裏再劃分出來的一部分作爲驗證集,用來選擇模型和調參的。當調好之後,再用測試集對該模型進行泛化性能的評估,如果性能OK,再把測試集輸入到模型中訓練,最終得到的模型就是提交給用戶的模型。

舉例
舉個高三學生高考的例子吧,

  • 訓練集 就是 平時的作業,習題冊等
  • 驗證集 就是 一模、二模、三模的試題
  • 測試集 就是 高考試題

訓練集是給學生進行學習的,提高學生的能力;驗證集是用來檢驗學生的學習方法,學習方向,學習方式,是否正確;測試集是最終考察學生的成績如何。

不過幸運的是,我們有多次“高考”的機會,只不過,我們不能去分析高考的試題,因爲測試集僅僅作爲一個驗證。

一般來說,當驗證集和測試集具有同分布的時候(即模擬題和高考題幾乎一樣的時候),在模擬考能拿650分,那麼在真實考高中也會在650分左右。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章