k交叉驗證詳解

2022-02-23 00:53:04 字數 2125 閱讀 4090

**

重點放在前面:

n折交叉驗證有兩個用途:模型評估、模型選擇。

n折交叉只是一種劃分資料集的策略。想知道它的優勢,可以拿它和傳統劃分資料集的方式進行比較。它可以避免固定劃分資料集的侷限性、特殊性,這個優勢在小規模資料集上更明顯。

把這種策略用於劃分訓練集和測試集,就可以進行模型評估;把這種策略用於劃分訓練集和驗證集,就可以進行模型選擇。

不用n折交叉驗證就不能進行模型評估和模型選擇了嗎?當然不是。只要有測試集,就能進行模型評估;只要有驗證集,就能進行模型選擇。所以n折交叉驗證只是在做這兩件事時的一種可選的優化手段。

正文:之前做乙個深度學習專案,因為資料集很小,實驗室的學長建議用交叉驗證的方法來避免過擬合。但是在學習相關資料的時候,發現很多地方對於「交叉驗證「的方法的說法不一致:有些說法是把資料集分成 ,有些說法是只需要把資料集分成 。

實際上,交叉驗證有多種用途。如果進行交叉驗證的目的不一樣,那麼在實施交叉驗證時的方法也會不一樣。交叉驗證的作用主要有兩個:

交叉驗證最關鍵的作用是進行模型選擇,也可以稱為超引數選擇

在這種情況下,資料集需要劃分成訓練集、驗證集、測試集三部分,訓練集和驗證集的劃分採用n折交叉的方式。很多人會把驗證集和測試集搞混,如果是這種情況,必須明確地區分驗證集和測試集。

具體的過程是,首先在訓練集和驗證集上對多種模型選擇(超引數選擇)進行驗證,選出平均誤差最小的模型(超引數)。選出合適的模型(超引數)後,可以把訓練集和驗證集合並起來,在上面重新把模型訓練一遍,得到最終模型,然後再用測試集測試其泛化能力。

對這種型別的交叉驗證比較有代表性的解釋有:台大李巨集毅的《機器學習》課程、李飛飛的《cs231n計算機視覺》課程等。

台大李巨集毅《機器學習》課程 lec2 」where does the error come from「

斯坦福李飛飛《cs231n計算機視覺》課程 lec2 」image classification pipeline「交叉驗證的另乙個用途,就是模型是確定的,沒有多個候選模型需要選,只是用交叉驗證的方法來對模型的performance進行評估

這種情況下,資料集被劃分成訓練集、測試集兩部分,訓練集和測試集的劃分採用n折交叉的方式。這種情況下沒有真正意義上的驗證集,個人感覺這種方法叫做」交叉測試「更合理...

相比於傳統的模型評估的方式(劃分出固定的訓練集和測試集),交叉驗證的優勢在於:避免由於資料集劃分不合理而導致的問題,比如模型在訓練集上過擬合,這種過擬合不是可能不是模型導致的,而是因為資料集劃分不合理造成的。這種情況在用小規模資料集訓練模型時很容易出現,所以在小規模資料集上用交叉驗證的方法評估模型更有優勢

對這種型別的交叉驗證比較有代表性的解釋有:周志華《機器學習》。

周志華《機器學習》兩種用途在本質上是一致的,模型評估可以看成是模型選擇過程中的乙個步驟:先對候選的每個模型進行評估,再選出評估表現最好的模型作為最終模型。

交叉驗證的核心思想在於對資料集進行多次劃分,對多次評估的結果取平均,從而消除單次劃分時資料劃分得不平衡而造成的不良影響。因為這種不良影響在小規模資料集上更容易出現,所以交叉驗證方法在小規模資料集上更能體現出優勢。

當用交叉驗證進行模型選擇時,可以從多種模型中選擇出泛化能力最好的(即最不容易發生過擬合)的模型。從這個角度上講,交叉驗證是避免發生過擬合的手段。同樣是解決過擬合的方法,交叉驗證與正則化不同:交叉驗證通過尋找最佳模型的方式來解決過擬合;而正則化則是通過約束引數的範數來解決過擬合。

當用交叉驗證進行模型評估時,交叉驗證不能解決過擬合問題,只能用來評估模型的performance。

優點:獲得對模型更合理更準確的評估,尤其是資料集很小時,更能體現出這個優勢。

缺點:增加了計算量。

k折交叉驗證

在做機器學習這方面研究的時候,例如pcr和pls等演算法時常會遇到最佳潛變數的選取,神經元個數的選取 這些引數的選取對模型的質量產生極大的影響。如果人為選取,這樣是十分不可靠的也是不現實的。進行交叉驗證是乙個優秀模型形成必不可少的過程。交叉驗證的目的是為了得到更為穩健可靠的模型。交叉驗證的方法有許多...

K折交叉驗證

k 層交叉檢驗之後,我們得到 k 個不同的模型誤差估算值 e1,e2 ek 理想的情況是,這些誤差值相加得 0 要計算模型的偏誤,我們把所有這些誤差值相加。平均值越低,模型越優秀。模型表現變化程度的計算與之類似。取所有誤差值的標準差,標準差越 明模型隨訓練資料的變化越小。from sklearn i...

K折交叉驗證 (cv)

之前一直理解錯了 我知道k折交叉驗證是在模型選擇過程 model selection 中用來評估候選模型的。把整個訓練集分成k份,一共進行k次評估,每次用k 1份訓練,用1份來驗證。之前以為這k次是對同乙個模型迭代訓練的,其實不是!其實是產生了k個模型,對他們的誤差取平均,來評估你選擇的模型好不好,...