logo
Loading...

K-fold Validation如何使用? - Cupoy

想問一下針對K-fold Validation的必要性? 另外是否可提供更詳細針對這個部分的程式碼以...

K-fold Validation如何使用?

2021/07/08 上午 11:54
訓練/測試集切分的概念
Yaoga
觀看數:336
回答數:3
收藏數:0

想問一下針對K-fold Validation的必要性? 另外是否可提供更詳細針對這個部分的程式碼以利參考呢? 切成幾等分對結果是否有會有直接影響? 另外是否可克服單一分法的過擬合的問題呢? 感謝了~

回答列表

  • 2021/07/09 上午 00:10
    Yun
    贊同數:2
    不贊同數:0
    留言數:0

    必要性: K-fold 的使用是屬於交叉驗證是**為了避免依賴某一特定的訓練和測試資料產生偏差**。 交叉驗證就是 一般來說會將數據分為兩個部分,一部分用來訓練,一部分用來測試,將樣本切割成多個小子集的做測試與訓練。 在k交叉驗證中,是使用不同的資料組合來驗證你訓練的模型,舉例來說,假設你有100個樣本,你可以第一次先使用前90個做訓練,另外10個做測試,然後再用第80到90個,不斷重複這個動作,這樣你可以得到不同的訓練/測試資料組合,提供更多數據去驗證。 切分跟過擬合問題: 至於k的挑選 (分成幾組或每幾個資料為一組) 通常這時就會把程式重複執行k次,一般我是試k_range = range(1, 31) ,看這k次的performance最後的平均和標準差,最後會去report這個平均值當做模型的performance 中間取間的k數量通常是最好的,而到後面則有下降的趨勢,就是所謂的Overfitting,意思就是太過追求參數完美預測出訓練數據結果,反而會導致實際預測效果不佳。 相關的程式碼你可以參考這個https://scikit-learn.org/stable/modules/cross_validation.html

  • 2021/07/21 下午 08:23
    Yilin
    贊同數:0
    不贊同數:0
    留言數:0

    基本上 sklearn [官方](https://scikit-learn.org/stable/modules/cross_validation.html#cross-validation)有提供很多範例,以及很多不同的變形實作。 以下兩篇文是我最近寫的,希望可以幫助到你~ https://andy6804tw.github.io/2021/07/08/cross-validation-intro/ https://andy6804tw.github.io/2021/07/09/k-fold-validation/

  • 2021/07/22 下午 02:28
    Yaoga
    贊同數:0
    不贊同數:0
    留言數:3

    不好意思,我想把這套方法問得更明確些, 所以採用K-fold Validation切割後會得到每個驗證集所對應的分數, 到時候是要將每個驗證集的分數取平均來得到真正的驗證集分數嗎? 是僅止於得到一個驗證平均分數而以嗎? 還是說對於切割後各個訓練集模型也會一併平均得到一個模型呢?