機器學習中的訓練集 驗證集 測試集的關系

技術交流QQ群:1027579432,歡迎你的加入!

1.劃分測試集目的

  • 為了了解一個模型對新樣本的泛化能力,唯一的辦法是:讓已經訓練好的模型真正的處理新的樣本。
  • 解決方法: 將原始數據劃分成兩個部分:訓練集 測試集。可以使用訓練集來訓練模型,然后用測試集來測試模型。通過測試集來評估模型,可以了解模型的泛化誤差。
  • 如果訓練誤差很低,但是泛化誤差很高,說明模型對于訓練數據已經過擬合了。
  • 一般將原始數據集劃分為70%的訓練集,30%的測試集合。

2.劃分驗證集目的

  • 現在有兩個模型(例如:線性模型和多項式模型)都可以解決同一個實際問題,你正在由于猶豫不決。如何作出判斷:訓練出兩個模型,然后對比它們對測試數據的泛化能力。假設線性模型的泛化能力更強,但為了避免模型過擬合,有必須設置正則化超參數。如何選擇出最佳的正則化超參數的值呢?做法之一是使用100個不同的超參數值來訓練100個不同的模型,假設已經找出最佳的超參數值,它生成的模型的泛化誤差最小。使用此模型運行在實際生產環境中,并沒有達到預期的精度。這是由于在你對測試集的泛化誤差進行了多次測量來調整模型和超參數時,擬合出的模型只對測試集是最佳參數,對新的數據不太有可能有好的表現。
  • 解決方法:單獨從原始數據中劃分出一個保留的集合即驗證集。在訓練集上,使用不同的超參數訓練多個模型,然后通過驗證集,選擇出最好的那個模型和對應的超參數。最后再運行一遍測試集,得到泛化誤差的估計值。
  • 實際中,為了避免浪費太多的訓練數據,采用交叉驗證。將訓練集劃分為若干個互補的子集,然后每個模型都通過這些子集的不同組合來進行訓練,之后用剩余的子集來進行驗證。一旦模型和超參數都確定,最終的模型會帶著這些超參數對整個訓練集進行一次訓練,最后用測試集來測量泛化誤差。
  • 一般劃分規則: 60%訓練集數據,20%驗證集數據, 20%測試集數據

3.K折交叉驗證

  • 將可用數據劃分為K個分區(K通常為4或5),實例化K個相同的模型,將每個模型在K-1個分區上訓練,并在剩下的一個分區上進行評估,模型的驗證分數等于K個驗證分數的平均值。

4.訓練集 驗證集 測試集使用

  • 在訓練集上訓練模型,在驗證集上評估模型,一旦找到最佳參數,就在測試集上最后測試一次。

5.多分類與多標簽分類區別

  • 多分類:每個樣本都應被劃分到兩個以上的類別上,例如MNIST手寫數字體分類
  • 多標簽分類:每個輸入樣本可以被分配到多個標簽。例如一幅圖像中既有貓又有狗,那么應該同時標注“貓”和“狗”的標簽,每幅圖片的標簽的個數通常是可變的。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容