Cross-Validation

K-fold 與 Monte Carlo 交叉驗證

  • March 5, 2013

我正在嘗試學習各種交叉驗證方法,主要是打算應用於有監督的多元分析技術。我遇到的兩個是 K-fold 和 Monte Carlo 交叉驗證技術。我讀過 K-fold 是 Monte Carlo 的一種變體,但我不確定我是否完全理解 Monte Carlo 的定義。有人可以解釋這兩種方法之間的區別嗎?

-折疊交叉驗證

假設您有 100 個數據點。為了-fold 交叉驗證,這100個點分為大小相等且互斥的“折疊”。為了=10,您可以將點 1-10 分配給折疊 #1,將 11-20 分配給折疊 #2,依此類推,最後將點 91-100 分配給折疊 #10。接下來,我們選擇一個折疊作為測試集,並使用剩餘的折疊折疊形成訓練數據。對於第一次運行,您可以使用點 1-10 作為測試集,使用點 11-100 作為訓練集。然後下一次運行將使用點 11-20 作為測試集,並在點 1-10 加上 21-100 上進行訓練,依此類推,直到每個折疊都被用作測試集一次。

蒙特卡洛交叉驗證

蒙特卡洛的工作方式略有不同。您隨機選擇(不替換)一部分數據來形成訓練集,然後將其餘點分配給測試集。然後多次重複此過程,每次都(隨機)生成新的訓練和測試分區。例如,假設您選擇使用 10% 的數據作為測試數據。那麼您在 rep #1 上的測試集可能是點 64、90、63、42、65、49、10、64、9648。在下一次運行中,您的測試集可能是****90、60、23、67、16、78、42、17、73和**26。**由於每次運行的分區都是獨立完成的,同一點可以多次出現在測試集中,這是蒙特卡洛和交叉驗證之間的主要區別

比較

每種方法都有自己的優點和缺點。在交叉驗證下,每個點都只測試一次,這似乎很公平。但是,交叉驗證僅探索了您的數據可能已被分區的幾種可能方式。蒙特卡洛讓您探索更多可能的分區,儘管您不太可能得到所有分區——有50/50 拆分 100 個數據點集的可能方法(!)。

如果您嘗試進行推理(即,統計比較兩種算法),請平均-fold 交叉驗證運行讓您對算法的性能進行(幾乎)無偏估計,但方差很大(正如您所期望的那樣,只有 5 或 10 個數據點)。由於原則上您可以根據需要/負擔得起的時間運行它,因此蒙特卡洛交叉驗證可以為您提供更少的變量,但更偏向的估計。

一些方法融合了這兩者,如 5x2 交叉驗證(見Dietterich (1998)的想法,雖然我認為從那時起有一些進一步的改進),或者通過糾正偏差(例如,Nadeau 和 Bengio,2003) .

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

comments powered by Disqus