Cross-Validation

什麼時候真正需要嵌套交叉驗證並且可以產生實際的影響?

  • October 22, 2015

當使用交叉驗證進行模型選擇(例如超參數調整)和評估最佳模型的性能時,應該使用嵌套交叉驗證。外循環是評估模型的性能,內循環是選擇最好的模型;在每個外部訓練集上選擇模型(使用內部 CV 循環),並在相應的外部測試集上測量其性能。

這已經在許多線程中進行了討論和解釋(例如,在交叉驗證後使用完整數據集進行訓練?,請參閱@DikranMarsupial 的答案),我完全清楚。僅對模型選擇和性能估計進行簡單(非嵌套)交叉驗證可以產生正偏差的性能估計。@DikranMarsupial 有一篇 2010 年關於這個主題的論文(關於模型選擇中的過度擬合和性能評估中的後續選擇偏差),第 4.3 節被稱為模型選擇中的過度擬合真的是實踐中的真正問題嗎?——論文表明答案是肯定的。

話雖如此,我現在正在使用多元多元嶺回歸,我看不出簡單和嵌套 CV 之間有任何區別,因此在這種特殊情況下,嵌套 CV 看起來像是不必要的計算負擔。我的問題是:在什麼情況下,簡單的 CV 會產生明顯的偏差,而嵌套 CV 可以避免這種偏差?嵌套 CV 什麼時候在實踐中很重要,什麼時候沒那麼重要?有什麼經驗法則嗎?

這是使用我的實際數據集的插圖。橫軸是用於嶺回歸。縱軸是交叉驗證誤差。藍線對應於簡單(非嵌套)交叉驗證,有 50 個隨機 90:10 訓練/測試拆分。紅線對應於具有 50 個隨機 90:10 訓練/測試拆分的嵌套交叉驗證,其中使用內部交叉驗證循環(也是 50 個隨機 90:10 分割)選擇。線條表示超過 50 個隨機分割,陰影顯示標準差。

簡單與嵌套交叉驗證

紅線是平的,因為在內環中被選中,而外環性能未在整個範圍內測量的。如果簡單的交叉驗證有偏差,那麼藍色曲線的最小值將低於紅線。但這種情況並非如此。

更新

實際上就是這樣:-) 只是差異很小。這是放大:

簡單與嵌套交叉驗證,放大

這裡可能會產生誤導的一件事是我的誤差線(陰影)很大,但是嵌套和簡單的 CV 可以(並且曾經)使用相同的訓練/測試拆分進行。因此,正如@Dikran 在評論中所暗示的那樣,它們之間的比較是*成對的。*因此,讓我們來看看嵌套 CV 錯誤和簡單 CV 錯誤之間的區別(對於這對應於我的藍色曲線上的最小值);同樣,在每一折中,這兩個錯誤都是在同一個測試集上計算的。繪製這種差異訓練/測試拆分,我得到以下信息:

簡單與嵌套交叉驗證,差異

零對應於內部 CV 循環也產生的分割(它幾乎發生了一半的時間)。平均而言,差異往往是正的,即嵌套 CV 的誤差*略高。*換句話說,簡單的 CV 表現出一種微不足道但樂觀的偏見。

(我運行了整個過程幾次,每次都會發生。)

我的問題是,在什麼情況下我們可以期望這種偏見是微不足道的,在什麼情況下我們不應該?

我建議偏差取決於模型選擇標準的方差,方差越高,偏差可能越大。模型選擇標準的方差有兩個主要來源,評估它的數據集的大小(所以如果你有一個小數據集,偏差可能越大)和統計模型的穩定性(如果通過可用的訓練數據很好地估計了模型參數,模型通過調整超參數來過度擬合模型選擇標準的靈活性較小)。另一個相關因素是要做出的模型選擇和/或要調整的超參數的數量。

在我的研究中,我正在研究強大的非線性模型和相對較小的數據集(通常用於機器學習研究),這兩個因素都意味著嵌套交叉驗證是絕對必要的。如果您增加參數的數量(可能具有每個屬性的縮放參數的內核),過度擬合可能是“災難性的”。如果您使用的線性模型只有一個正則化參數並且案例數量相對較多(相對於參數數量而言),那麼差異可能會小得多。

我應該補充一點,我建議始終使用嵌套交叉驗證,只要它在計算上是可行的,因為它消除了可能的偏見來源,因此我們(和同行評審員;o)不需要擔心它是否是可以忽略不計。

引用自:https://stats.stackexchange.com/questions/178174

comments powered by Disqus