日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【技术分享】什么是K折交叉验证?

發布時間:2023/12/20 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【技术分享】什么是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次訓練訓練訓練訓練訓練訓練訓練訓練訓練驗證
第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折交叉验证?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。