Cross-Validation
K-fold 交叉驗證會導致過擬合嗎?
我在學習 $ k $ -折疊交叉驗證。由於每個折疊都將用於訓練模型(在 $ k $ 迭代),這不會導致過度擬合嗎?
K-fold 交叉驗證是檢測過擬合的標準技術。它不能“導致”因果關係意義上的過度擬合。
但是,不能保證 k 折交叉驗證消除過擬合。人們將它用作過度擬合的靈丹妙藥,但事實並非如此。這可能還不夠。
應用交叉驗證的正確方法是作為一種檢測過擬合的方法。如果你做 CV,並且如果測試和訓練誤差之間存在很大差異,那麼你就知道你過擬合了,需要獲得更多不同的數據或選擇更簡單的模型和更強的正則化。相反不成立:測試和訓練錯誤之間沒有大的差異並不意味著你沒有過度擬合。
這不是靈丹妙藥,而是我們擁有的檢測過度擬合的最佳方法(如果使用得當)。
交叉驗證可能失敗的一些示例:
- 數據是有序的,而不是在拆分之前打亂
- 不平衡的數據(嘗試分層交叉驗證)
- 在不同的折疊中重複
- 自然組(例如,來自同一用戶的數據)被打亂成多個折疊
在其他情況下,即使使用得當,它也無法檢測到信息洩漏和過度使用。例如,在分析時間序列時,人們喜歡將數據標準化,將其拆分為過去和未來的數據,然後訓練一個模型來預測這些股票的未來發展。細微的信息洩漏在預處理中:時間分裂之前的標準化洩漏了關於剩餘部分的平均值的信息。類似的洩漏可能發生在其他預處理中。在異常值檢測中,如果您將數據縮放到 0:1,模型可以知道接近 0 和 1 的值是您可以觀察到的最極端值等。
回到你的問題:
由於每個折疊都將用於訓練模型(在迭代中),這不會導致過度擬合嗎?
不會。每折都是用來從頭開始訓練一個新模型,預測準確率,然後**丟棄模型。您不使用在 CV 期間訓練的任何模型。
您使用驗證(例如 CV)有兩個目的:
- 估計您的模型在部署時(希望)在實踐中的工作情況,而不會冒險在生產中進行真正的 AB 測試。您只想使用預期效果比您當前方法更好的模型,否則這可能會使您的公司損失數百萬美元。
- 找到用於訓練最終模型的“最佳”參數(您想要在整個訓練數據上進行訓練)。調整超參數是指如果你不小心就會有很高的過度擬合風險。
CV不是通過輸入 10 批數據來“訓練”模型的方法。