Cross-Validation
Out of Bag Error 使 CV 在隨機森林中變得不必要?
我對隨機森林相當陌生。過去,我總是將fit vs test與fit vs train的準確性進行比較,以檢測任何過度擬合。但我只是在這裡讀到:
“在隨機森林中,不需要交叉驗證或單獨的測試集來獲得測試集誤差的無偏估計。它是在內部估計的,在運行期間……”
上面的小段可以在袋外(oob)誤差估計部分下找到。這個 Out of Bag Error 概念對我來說是全新的,有點令人困惑的是我的模型中的 OOB 錯誤是 35%(或 65% 的準確度),但是,如果我對我的數據應用交叉驗證(只是一個簡單的堅持方法)並將擬合與測試與擬合與訓練進行比較,我分別得到 65% 的準確率和 96% 的準確率。根據我的經驗,這被認為是過度擬合,但 OOB 包含 35% 的錯誤,就像我的擬合與測試錯誤一樣。我過擬合了嗎?我是否應該使用交叉驗證來檢查隨機森林中的過度擬合?
簡而言之,當我的擬合與訓練表明我過度擬合時,我不確定是否應該相信 OOB 得到測試集錯誤的無偏錯誤!
- 訓練錯誤(如
predict(model, data=train)
)通常是無用的。除非您對樹進行(非標準)修剪,否則根據算法的設計,它不能遠高於 0。隨機森林使用決策樹的引導聚合,已知這些決策樹嚴重過度擬合。這就像 1-nearest-neighbour 分類器的訓練錯誤。- 然而,該算法提供了一種非常優雅的方法來計算袋外誤差估計,這本質上是聚合模型誤差的自舉估計)。袋外誤差是聚合預測的估計誤差在沒有這種特殊情況的情況下訓練的樹的一小部分。
如果輸入數據行之間沒有依賴關係,則為袋外錯誤聚合的模型將僅是獨立的。即每一行=一個獨立的案例,沒有分層數據結構/沒有聚類/沒有重複測量。
因此袋外錯誤與交叉驗證錯誤並不完全相同(用於聚合的樹更少,訓練用例副本更多),但出於實際目的,它已經足夠接近了。
- 為了檢測過度擬合,將袋外錯誤與外部驗證進行比較是有意義的。但是,除非您了解數據中的聚類,否則“簡單”的交叉驗證錯誤將容易出現與袋外錯誤相同的樂觀偏差:拆分是根據非常相似的原則完成的。
您需要將袋外驗證或交叉驗證與錯誤進行比較,以便精心設計的測試實驗檢測到這一點。