Machine-Learning

留一法交叉驗證 (LOOCV) 是否會系統地高估錯誤?

  • December 8, 2019

假設我們要建立一個回歸模型,該模型需要預測構建中的溫度。我們從一個非常簡單的模型開始,我們假設溫度僅取決於工作日。

現在我們想使用 k-fold 驗證來檢查我們的假設是否有效。現在,對於每個工作日,我們使用整個數據集計算平均溫度。但是,當我們進行留一驗證時,我們會進行一次觀察並在沒有這個特定觀察的情況下計算平均值。結果,每當觀察值上升時,相應的預測(用剩餘值計算的平均值)就會下降。因此,我們在觀察和預測之間存在反相關,它應該會明顯降低模型的準確性。

所以,我的問題是:這是一個已知的影響以及如何處理它?

這種效應不僅發生在留一法中,而且通常發生在 k 折交叉驗證 (CV) 中。你的訓練和你的驗證集不是獨立的,因為分配給你的驗證集的任何觀察顯然會影響你的訓練集(因為它被從中取出)。

這種情況的擴展程度取決於您的數據和預測器。舉一個非常簡單的例子,使用你關於每日溫度的任務使用留一法:如果你的數據只包含一個(相同的)值 $ n $ 次,那麼您的平均預測器將始終預測正確的值 $ n $ 折疊。如果您使用從訓練集中獲取最大值的預測器(用於預測和計算真實值),那麼您的模型將是正確的 $ n-1 $ 折疊(只有從訓練數據集中刪除最大值的折疊會被錯誤地預測)。即,存在留一法可能或多或少適合的預測變量和數據集。

具體來說,您的均值估計器有兩個屬性:

  1. 它取決於訓練集中的所有示例(即在現實世界的非平凡數據集中(與我上面的示例不同),它將在每個折疊中預測不同的值)。例如,最大預測器不會顯示此行為。
  2. 它對異常值很敏感(即刪除其中一個折疊中的極高或極低值將對您的預測產生相對較大的影響)。例如,中值預測器不會在相同程度上顯示這種行為。

這意味著您的平均預測器在每個設計中都有些不穩定。您可以接受(特別是在觀察到的方差不是很大的情況下)或選擇不同的預測變量。但是,如前所述,這也取決於您的數據集。如果您的數據集很小且方差很大,則均值預測器的不穩定性會增加。因此,擁有一個足夠大的數據集和適當的預處理(可能去除異常值)可能是解決此問題的另一種方法。另外,我要記住,沒有完美的方法來衡量準確性。

論文A Study of Cross-Validation and Bootstrap for Accuracy Estimation and Model Selection是這個主題的一個很好的起點。它側重於分類,但仍然是一本很好的讀物,可以獲取有關該主題的更多詳細信息和進一步閱讀。

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

comments powered by Disqus