【技术分享】什么是K折交叉验证?
文章目錄
- 1.什么是訓練集、驗證集和測試集?
- 2.什么是K折交叉驗證?
- 3.數據集劃分過程
- 3.應用場景及注意事項
- 3.1.應用場景
- 3.2.注意事項
1.什么是訓練集、驗證集和測試集?
訓練集,即:訓練的集合,是用來訓練模型的數據集合。通過這部分數據,學習得到一個模型。訓練集可以當做高中刷題的題庫,訓練的過程可以比作高中生學習的過程。
測試集,即:測試的集合,是用來檢驗或者說驗證模型的數據集合。通過這部分數據,可以驗證學習的好壞。測試集可以當做高考的試題,測試的過程可以比作參加高考。
理解上述兩個概念以后,那學習的過程我們就可以捋清楚了:
通過學習(理解成“訓練”的過程),讓自己變得更好(把自己當成“模型”)。通過3年的學習(訓練了3年),參加高考(理解成“測試”的過程),檢驗自己學得好不好。
注意注意!此時此刻我其實隱含了一個假設條件,就是你參加完高考以后不能憑借著考場的回憶再去刷題,就是高考完以后你腦子就回到了高一入學的狀態重新學習3年參加高考,高考如果不理想腦子又回到了高一入學的狀態重新學習3年參加高考……在機器學習中,也就是說:“訓練集”不能用于訓練更新模型。當測試效果發現不行時,從頭開始訓練,不能含有一點記憶。
那么問題來了:我花了3年時間去訓練,高考完了發現沒學好、高考分數很低怎么辦?時間都白白浪費了,但還沒有學好。有的人可能說,那就再來3年唄。好,那咱們就再來3年,再來3年就一定會好嗎?是不一定的,再來3年,再來10個3年也不是一定可以學好的。那訓練不好就重新訓練,那什么時候是個頭呀?
所以,此時又有人想出了一個辦法,我們每半年參加1次模擬考試,檢驗一下學習效果,及時調整學習策略。這,就是驗證集(模擬考試的題庫)
驗證集,就是用來檢驗模型數據的集合。
此時可以適當總結下:驗證集≠測試集(模擬成績≠高考成績,模擬成績好可能高考大概率會好,但不代表高考成績一定好)
2.什么是K折交叉驗證?
K折交叉驗證,是一種動態的驗證方式。以 K 取10為例,將數據集(此數據集非機器學習中的數據集,而是指一種數據的集合,只是為了解釋分組問題的一個概念)劃分成10份,將每份數據分別標記為1號、2號、3號、4號、5號、6號、7號、8號、9號、10號。每次訓練用1份作為驗證集,其余9份作為驗證集,如下表所示。
| 第1次 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 | 驗證 |
| 第2次 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 | 驗證 | 訓練 |
| 第3次 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 | 驗證 | 訓練 | 訓練 |
| 第4次 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 | 驗證 | 訓練 | 訓練 | 訓練 |
| 第5次 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 | 驗證 | 訓練 | 訓練 | 訓練 | 訓練 |
| 第6次 | 訓練 | 訓練 | 訓練 | 訓練 | 驗證 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 |
| 第7次 | 訓練 | 訓練 | 訓練 | 驗證 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 |
| 第8次 | 訓練 | 訓練 | 驗證 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 |
| 第9次 | 訓練 | 驗證 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 |
| 第10次 | 驗證 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 | 訓練 |
問1: 那為什么要用驗證集?
答1: 用來調整超參數的。
問2: 比如分類問題中用到了激活函數,但不知道使用relu還是tanh函數的準確率更高,該怎么辦?
答2: 那就用relu函數來訓練10次得到10份驗證集上的準確率,將10份準確率取個均值作為relu函數的代表。再用tanh函數來訓練10次得到10份驗證集上的準確率,將10份準確率取個均值作為tanh函數的代表。將這兩個準確率進行比較,哪個準確率高,就說明哪個激活函數更好。
當確定好某個函數的準確率好時,就是用該激活函數,再將全部數據作為訓練集訓練,然后在測試集上進行測試即可。
這么做的優點是:
- 使用了驗證集,可以檢驗學習的好壞。
- 每份數據都當過驗證集、也都當過訓練集,不會存在因數據問題帶來模型偏差。
- 充分訓練了模型(畢竟每份數據被用來訓練了9次),當數據量小時起到了“擴充”訓練數據的作用。
- 可以挑選出最佳的超參數。
3.數據集劃分過程
- 將數據集分為訓練集和測試集,將測試集放在一邊先不管。
- 已知目前有 N 組超參數組合(將從 N 組中挑選出最好的1組)。
- 對每個超參數組而言,將訓練集分為 K 份。每次使用 K 份中的 1 份作為驗證集,其他 K-1 份作為訓練集。通過 K 次訓練后,我們得到了 K 個不同的評價指標。將 K 個評價指標取均值作為該超參數組的代表。
- 循環 N 次,獲得 N 個超參數組對應的評價指標的均值,取其中最好的一個超參數組。
- 使用最優的超參數,然后將 K 份數據全部作為訓練集重新訓練模型,得到最終模型,然后直接在測試集上測試即可。
3.應用場景及注意事項
3.1.應用場景
- 數據量較小時,會使用 K 折交叉驗證。K 折交叉驗證可以起到“擴充”數據的作用。
- 超參數多,不知道該選哪個合適,會用到K折交叉驗證。
3.2.注意事項
- K 折交叉驗證,不是 K 折交叉測試(這在好多文章中都搞混了),測試集是不能用來更新模型和調整超參數的。我們將數據分成K份的目的是來驗證數據的,不是來測試數據的。驗證≠測試。
- 可以將 K 折交叉驗證,概括為 N 次 K 折交叉驗證。N 是指超參數組的數量,需要從 N 個超參數組中選出最好的一個來;K 是指交叉驗證劃分的數量,一般取5或者10。
總結
以上是生活随笔為你收集整理的【技术分享】什么是K折交叉验证?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android获取SIM卡信息和手机号码
- 下一篇: 基于SSM的眼镜店耗材与档案管理系统