S折交叉驗證(S-fold cross validation)


S折交叉驗證(S-fold cross validation)

覺得有用的話,歡迎一起討論相互學習~

我的微博我的github我的B站

僅為個人觀點,歡迎討論

參考文獻
https://blog.csdn.net/aliceyangxi1987/article/details/73532651
李航-統計學習方法
https://blog.csdn.net/jasonding1354/article/details/50562513
知乎問題

引用《統計學習方法》

  • S折交叉驗證
    • 首先隨機地將已給數據切分為S個互補相交的大小相同的子集;然后利用S-1個子集的數據訓練模型,利用余下的子集測試模型;將這一過程對所有可能的S種選擇重復進行;最后選出S次測評中平均測試誤差最小的模型

問題引入

此處引入各種想法

  1. 目前,根據行業公認的評價方法的所謂准確率等指標,都是對測試集而言的,因此要求測試集不參與模型的訓練過程。
    十折交叉驗證方法中,10份數據輪流作為訓練集和驗證集。
    因此實際上也是全部參加了訓練的。因此,理論上為了保證最后測試結果的有效性,應該先將數據分為訓練集和測試集,然后對訓練集采用十折交叉驗證。

鏈接:https://www.zhihu.com/question/274417233/answer/376476821

  1. 一般情況下,我會選擇先把整個數據集分為訓練集合(training set)和測試集合(test set)。訓練集用來構建和篩選模型,測試集合用於評估最后確定的模型。 具體言之,我們經常會用cross validation 來進行模型選擇和hyperparameter的優化,在確定了最佳模型和hyperparameters之后,再對最終的模型進行評估。而為保證最終的模型評估不被這個優化的過程所影響,評估時所用的數據集(也就是test set)不應該參與過之前的模型選擇和參數優化,所以是獨立於10-fold cross validation時所用的數據集的。
    簡而言之,我總結一下訓練和評估的大致步驟:
    1. 將數據集合分為訓練集合和測試集合;
    2. 在訓練集合中使用k-fold validation來進行模型選擇和調參數(hyperparameters),確定最佳模型和參數配置;
    3. 使用所有的訓練集合中的數據來訓練這個最佳模型;
    4. 用測試數據集來評估這個最佳模型。

鏈接:https://www.zhihu.com/question/274417233/answer/378759200

  1. 如果是將全部的數據分成10份d1,d2...d10,挑選其中的d1作為測試集,其他的作為訓練集,那么在訓練之后用模型對d1進行測試。然后下一組實驗開始的時候挑選d2作為測試集,其他的作為訓練集,訓練測試,再依次進行后面的。最后求平均。
    為什么測試集參與了訓練?每組開始的時候模型的參數應該是重新初始化的吧。模型參數重新初始化,等同於在這一組實驗內測試集僅作為測試,並沒有參與訓練啊。

鏈接:https://www.zhihu.com/question/274417233/answer/552752196

個人觀點

結合 csdn_JasonDing1354cdsn_liuweiyuxiang以及csdn_aliceyangxi1987的觀點和我自己的思考

以下觀點僅代表個人觀點

  1. 交叉驗證一般是用來表示一個方法比另一個方法好的,或者一個超參數比另一個超參數好的(而不是具體的神經元的偏置和權重) K折交叉驗證使用全部的數據,並且會有K個不同的模型,通過計算K個模型對應的測試集上的表現的平均值評價這個方法的好壞。也就是說 每次權重都進行了初始化,是K個不同的模型,評價的是方法
  2. 即我認同的是知乎上第三個觀點:
    如果為了提高模型的性能,我大可使用所有的數據進行訓練。
    如果我真的需要評價模型的好壞,直接給個沒見過的數據就好了(畢竟產學研相結合,什么東西都要放在實際生活着中進行檢測,人為的提前划分數據集為訓練集和測試集,再在訓練集上使用K折驗證,然后用測試集進行驗證,不如直接把訓練集上所有數據都用來訓練,更多的數據訓練效果更好啊!!哈哈哈~) 這樣就失去交叉驗證的意義了~ 呵呵呵


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM