Cross-Validation

k折交叉驗證後如何選擇預測模型?

  • March 15, 2013

我想知道在進行 K 折交叉驗證後如何選擇預測模型。

這可能措辭有些尷尬,所以讓我更詳細地解釋一下:每當我運行 K 折交叉驗證時,我都會使用 K 個訓練數據的子集,並最終得到 K 個不同的模型。

我想知道如何從 K 個模型中挑選一個,以便我可以將它展示給某人並說“這是我們可以生產的最好的模型”。

可以選擇 K 模型中的任何一個嗎?或者是否涉及某種最佳實踐,例如選擇實現中值測試誤差的模型?

我認為您在理解交叉驗證的目的時仍然遺漏了一些東西。

讓我們直接了解一些術語,通常當我們說“模型”時,我們指的是一種特定的方法,用於描述一些輸入數據與我們試圖預測的內容之間的關係。我們通常不將該方法的特定實例稱為不同的模型。因此,您可能會說“我有一個線性回歸模型”,但您不會將兩組不同的訓練係數稱為不同的模型。至少不是在模型選擇的背景下。

因此,當您進行 K 折交叉驗證時,您正在測試您的模型能夠如何通過某些數據進行訓練,然後預測它沒有看到的數據。我們為此使用交叉驗證,因為如果您使用您擁有的所有數據進行訓練,那麼您將沒有任何數據可供測試。您可以這樣做一次,例如使用 80% 的數據進行訓練,使用 20% 的數據進行測試,但是如果您碰巧選擇測試的 20% 恰好包含一堆特別容易(或特別難)的點怎麼辦預測?我們不會對模型的學習和預測能力做出最好的估計。

我們想使用所有的數據。因此,為了繼續上述 80/20 拆分的示例,我們將通過對 80% 的數據訓練模型 5 次並在 20% 的數據上進行測試來進行 5 倍交叉驗證。我們確保每個數據點在 20% 的測試集中恰好出現一次。因此,我們使用了我們必須的每個數據點,以幫助了解我們的模型在從一些數據中學習和預測一些新數據的任務方面表現如何。

但交叉驗證的目的不是想出我們的最​​終模型。我們不使用我們訓練模型的這 5 個實例來進行任何真正的預測。為此,我們希望使用我們必須提出的所有數據來提出可能的最佳模型。交叉驗證的目的是模型檢查,而不是模型構建。

現在,假設我們有兩個模型,一個線性回歸模型和一個神經網絡。我們怎麼能說哪個模型更好?我們可以進行 K 折交叉驗證,看看哪一個在預測測試集點方面表現更好。但是,一旦我們使用交叉驗證來選擇性能更好的模型,我們就會在所有數據上訓練該模型(無論是線性回歸還是神經網絡)。我們不會將在交叉驗證期間訓練的實際模型實例用於我們的最終預測模型。

請注意,有一種稱為引導聚合(通常縮寫為“裝袋”)的技術,它使用以類似於交叉驗證的方式生成的模型實例來構建集成模型,但這是一種超出範圍的高級技術你的問題在這裡。

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

comments powered by Disqus