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

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

以爲有用的話,歡迎一塊兒討論相互學習~Follow Me

僅爲我的觀點,歡迎討論

參考文獻
http://www.javashuo.com/article/p-qltovpqr-kw.html
李航-統計學習方法
https://blog.csdn.net/jasonding1354/article/details/50562513
知乎問題git

引用《統計學習方法》

  • S折交叉驗證
    • 首先隨機地將已給數據切分爲S個互補相交的大小相同的子集;而後利用S-1個子集的數據訓練模型,利用餘下的子集測試模型;將這一過程對全部可能的S種選擇重複進行;最後選出S次測評中平均測試偏差最小的模型github

      問題引入

      此處引入各類想法
  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折驗證,而後用測試集進行驗證,不如直接把訓練集上全部數據都用來訓練,更多的數據訓練效果更好啊!!哈哈哈~) 這樣就失去交叉驗證的意義了~ 呵呵呵
相關文章
相關標籤/搜索