机器学习中的训练集、验证集、测试集;交叉验证方法
@創建于:20210826
@修改于:20210826
文章目錄
- 1、數據集類型
- 1.1 訓練集
- 1.2 驗證集
- 1.3 測試集
- 1.4 驗證集/測試集區別
- 2、四種交叉驗證方法
- 2.1 留出法 (holdout cross validation)
- 2.2 k 折交叉驗證(k-fold cross validation)
- 2.3 留一法(Leave one out cross validation)
- 2.4 Bootstrap
- 3、參考資料
1、數據集類型
數據是人工智能的基礎,可以對其進行劃分,以達到模型構建與訓練的目的。本文介紹3種數據集:訓練集、驗證集、測試集。
訓練集用于訓練模型,驗證集用于模型的參數選擇配置,測試集對于模型來說是未知數據,用于評估模型的泛化能力。
用一個抽象的比喻來說明3種數據集之間的關系:
訓練集相當于上課學知識
驗證集相當于課后的的練習題,用來糾正和強化學到的知識
測試集相當于期末考試,用來最終評估學習效果
1.1 訓練集
訓練集(Training Dataset)是用來訓練模型使用的,在訓練階段使用。
1.2 驗證集
當模型訓練好之后,并不知道他的表現如何。這個時候就可以使用驗證集(Validation Dataset)來看看模型在新數據(驗證集和測試集是不同的數據)上的表現如何。同時通過調整超參數,讓模型處于最好的狀態。
驗證集有2個主要的作用:
評估模型效果,為了調整超參數而服務
調整超參數,使得模型在驗證集上的效果最好
說明:
- 驗證集不像訓練集和測試集,它是非必需的。如果不需要調整超參數,就可以不使用驗證集,直接用測試集來評估效果。
- 驗證集評估出來的效果并非模型的最終效果,主要是用來調整超參數的,模型最終效果以測試集的評估結果為準。
1.3 測試集
調好超參數后,就要開始「最終考試」了。通過測試集(Test Dataset)來做最終的評估。評估的標準是評價方法。
1.4 驗證集/測試集區別
2、四種交叉驗證方法
交叉驗證法的基本思想就是將原始數據(dataset)進行分組,一部分做為訓練集來訓練模型,另一部分做為測試集來評價模型。
為什么用交叉驗證法?
交叉驗證用于評估模型的預測性能,尤其是訓練好的模型在新數據上的表,可以在一定程度上減小過擬合。
還可以從有限的數據中獲取盡可能多的有效信息。
可以選擇出合適的模型
主要有哪些方法?
Holdout Method
K-Fold CV
Leave One out CV
Bootstrap Methods
2.1 留出法 (holdout cross validation)
這種方法是最簡單的交叉驗證:
在機器學習任務中,拿到數據后,我們首先會將原始數據集分為三部分:訓練集、驗證集和測試集。
訓練集用于訓練模型,驗證集用于模型的參數選擇配置,測試集對于模型來說是未知數據,用于評估模型的泛化能力。
不過如果只做一次分割,它對訓練集、驗證集和測試集的樣本數比例,還有分割后數據的分布是否和原始數據集的分布相同等因素比較敏感, 不同的劃分會得到不同的最優模型, 而且分成三個集合后,用于訓練的數據更少了。
2.2 k 折交叉驗證(k-fold cross validation)
k 折交叉驗證通過對 k 個不同分組訓練的結果進行平均來減少方差, 因此模型的性能對數據的劃分就不那么敏感。
- 第一步,不重復抽樣將原始數據隨機分為 k 份。
- 第二步,每一次挑選其中 1 份作為測試集,剩余 k-1 份作為訓練集用于模型訓練。
- 第三步,重復第二步 k 次,這樣每個子集都有一次機會作為測試集,其余機會作為訓練集。
- 在每個訓練集上訓練后得到一個模型,
- 用這個模型在相應的測試集上測試,計算并保存模型的評估指標,
- 第四步,計算 k 組測試結果的平均值作為模型精度的估計,并作為當前 k 折交叉驗證下模型的性能指標。
k 一般取 10, 數據量小的時候,k 可以設大一點,這樣訓練集占整體比例就比較大,不過同時訓練的模型個數也增多。 數據量大的時候,k 可以設小一點。
2.3 留一法(Leave one out cross validation)
當 k=m 即樣本總數時,叫做 ** 留一法(Leave one out cross validation)**, 每次的測試集都只有一個樣本,要進行 m 次訓練和預測。
這個方法用于訓練的數據只比整體數據集少了一個樣本,因此最接近原始樣本的分布。 但是訓練復雜度增加了,因為模型的數量與原始數據樣本數量相同。 一般在數據缺乏時使用。 樣本數很多的話,這種方法開銷很大。
此外:
(1)多次 k 折交叉驗證再求均值,例如:10 次 10 折交叉驗證,以求更精確一點。
(2)劃分時有多種方法,例如對非平衡數據可以用分層采樣,就是在每一份子集中都保持和原始數據集相同的類別比例。
(3)模型訓練過程的所有步驟,包括模型選擇,特征選擇等都是在單個折疊 fold 中獨立執行的。
2.4 Bootstrap
還有一種比較特殊的交叉驗證方式,Bootstrapping: 通過自助采樣法, 即在含有 m 個樣本的數據集中,進行 m 次有放回地隨機抽樣,組成的新數據集作為訓練集。隨機森林用到了該方法。
這種方法,有的樣本會被多次采樣,也會有一次都沒有被選擇過的樣本,原數據集中大概有 36.8% 的樣本不會出現在新組數據集中,這些沒有被選擇過的數據作為驗證集。
- 優點是訓練集的樣本總數和原數據集一樣都是 m,并且仍有約 1/3 的數據不被訓練而可以作為測試集,對于樣本數少的數據集,就不用再由于拆分得更小而影響模型的效果。
- 缺點是這樣產生的訓練集的數據分布和原數據集的不一樣了,會引入估計偏差。
3、參考資料
- easyai.tech:訓練集、驗證集、測試集(附:分割方法+交叉驗證)
- cloud.tencent:訓練集、驗證集、測試集(附:分割方法+交叉驗證
- 數據集的劃分–訓練集、驗證集和測試集
- 機器學習面試題集 - 詳解四種交叉驗證方法
- 8種交叉驗證類型的深入解釋和可視化介紹
- 官網:Cross-validation: evaluating estimator performance
總結
以上是生活随笔為你收集整理的机器学习中的训练集、验证集、测试集;交叉验证方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 打卡系统练习
- 下一篇: 用vins_mono运行kitti(ra