2017-04-05 73 views
-1

評估推薦系統時,可以將他的數據分爲三部分:培訓,驗證和測試集。在這種情況下,將使用訓練集從數據中學習推薦模型,並使用驗證集來選擇要使用的最佳模型或參數。然後,使用選擇的模型,用戶可以使用測試集來評估他的算法的性能。Shoul我用k-fold-cross驗證將我的數據分成訓練/測試/驗證集?

我發現了一個scikit-learn交叉驗證的文檔頁面(http://scikit-learn.org/stable/modules/cross_validation.html),它說在使用k-fold-cross驗證時不需要將數據分成三部分,但只有兩部分:培訓和測試。

該問題的解決方案是一個稱爲交叉驗證(簡稱CV)的過程。測試集仍然應該進行最終評估,但是在做CV時不再需要驗證集。在稱爲k折CV的基本方法中,訓練集被分成k個較小的集合(其他方法如下所述,但通常遵循相同的原則)。

我想知道這是否是一個好方法。如果是這樣,有人可以給我看一篇支持這個理論的文章/書籍嗎?

+0

恐怕你的問題在這裏不太合適。您應該在http://datascience.stackexchange.com/上發佈它 – tagoma

回答

1

交叉驗證不避免驗證集,它只是使用很多。換句話說,不是一分爲三,而是一分爲二,而現在你所稱的「訓練」實際上是以前一直在訓練和驗證的內容,簡歷就是重複的分裂(以更聰明的方式隨機)進入訓練和測試,然後對結果進行平均。支持它的理論在幾乎任何優秀的ML書中都是廣泛可用的;至關重要的一點是「我應該使用它」,而且答案很簡單 - 如果你沒有足夠的數據來做一次拆分,只需要。如果您沒有足夠的數據表示您感興趣的分銷代表了每個分組,則使用CV,然後重複分組可以簡單地減少差異。此外,對於非常小的數據集,其中一個嵌套CV - 一個用於[train + val] [測試]分割和[train] [val]內部,因此兩個模型選擇及其最終評估的方差都會降低。

相關問題