機器學習交叉驗證:模型的“多場景考試”
在機器學習中,交叉驗證是一種非常重要的模型評估方法,它就像是給模型進行“多場景考試”,確保模型在不同的數據上都能表現良好。
今天,我們就用最通俗易懂的方式來講解交叉驗證,幫助你更好地理解這個概念。
No.1交叉驗證是什么?
想象你是一個廚師,你開發了一道新菜,想讓朋友嘗嘗好不好吃。如果你只讓一個朋友試吃,可能他的口味太獨特,評價不一定客觀。
所以,你可能會:
- 多找幾個朋友試吃(用不同數據測試模型)。
- 讓朋友輪流試吃不同的菜(用不同組合的數據訓練和測試模型)。
這就是交叉驗證的核心邏輯——避免偶然性,得到更可靠的結果。
交叉驗證的基本原理
交叉驗證法的核心是將數據集分成訓練集(用于訓練模型)和測試集(用于評估模型)。
圖片
但與簡單的一次性劃分不同,交叉驗證會多次劃分數據,每次用不同的數據組合來訓練和測試模型,最終綜合多次結果來評估模型性能。
No.2常見的交叉驗證方法
1. K折交叉驗證(K-Fold Cross-Validation)
K折交叉驗證是最常用的交叉驗證方法之一。它將數據集分成K個部分,每次用一個部分作為測試集,其他K-1個部分作為訓練集,重復K次,最后取平均效果。
圖片
假設你有10個蘋果,要測試哪個蘋果最甜。你把這10個蘋果分成10組(K = 10),每次拿1個蘋果出來嘗(測試集),剩下的9個蘋果用來比較(訓練集),這樣嘗10次,就能更準確地知道哪個蘋果最甜了。
優點是能充分利用數據,評估結果更穩定可靠;缺點是計算量相對較大,尤其是當K值較大或者數據集很大的時候。
2. 留一法交叉驗證(Leave-One-Out Cross-Validation, LOOCV)
這是K折交叉驗證的一個特例,當K等于數據集的大小時,就變成了留一交叉驗證。
也就是說,每次只留下一個樣本作為測試集,剩下的所有樣本作為訓練集,進行與數據集大小相同次數的訓練和測試。
圖片
還是那10個蘋果,這次你每次只嘗1個蘋果(測試集),剩下的9個蘋果用來比較(訓練集),要嘗10次,雖然結果很準確,但太費時間了。
優點是能最大程度地利用數據,評估結果非常準確;缺點是計算量極大,當數據集很大的時候,幾乎無法實現。
3. 自助法(Bootstrap)
自助法是一種通過隨機抽樣來評估模型性能的方法。它從數據集中隨機抽取一部分數據(可以重復抽樣),用這部分數據作為訓練集,剩下的數據作為測試集。
圖片
就像從裝有10個小球的袋子里,每次隨機抽一個小球并放回,重復10次。沒被抽到的小球作為測試集。多次重復后,雖能大致了解小球顏色分布,但可能有偏差,因為有些小球可能被多次抽到,有些則未抽到。
優點是適用于小數據集,能生成多個訓練集,有助于評估模型穩定性。缺點是改變了原始數據分布,可能引入偏差,因為部分樣本可能重復使用,部分樣本未被使用。
No.3如何選擇歸一化或標準化?
?? 準備數據:收集并整理好用于模型訓練和評估的數據集。
?? 劃分數據:將數據集平均分成 K 份,確保每份數據的大小和分布大致相同。
圖片
訓練和測試循環:
- 第一次:選擇第 1 份作為測試集,其余 K - 1 份作為訓練集,訓練模型并在測試集上進行評估,記錄評估指標(如準確率、均方誤差等)。
- 第二次:選擇第 2 份作為測試集,其余作為訓練集,重復訓練和評估過程,記錄指標。
- ……
- 第 K 次:選擇第 K 份作為測試集,其余作為訓練集,完成訓練和評估,記錄指標。
綜合評估:將 K 次測試得到的評估指標取平均值,作為模型的最終評估結果。
本文轉載自??Fairy Girl??,作者:Fairy Girl
