Cross-Validation

如何使用交叉驗證模型進行預測?

  • June 3, 2019

我想做以下步驟:

  1. 使用交叉驗證訓練模型
  2. 使用該模型進行未來預測(包括我的測試集)

cross_val_predict只給我它對訓練集的預測。在那之後,我的分類器在哪裡保存以備將來預測?我發現最接近的是運行cross_validate和 set return_estimator=True。這給了我一個訓練有素的估計器數組,因為它為每個折疊創建一個單獨的實例。

這是否意味著我現在被困在所有未來預測的集成 k 模型中?如果是這樣,有沒有一種方便的方法可以做到這一點?也許使用VotingClassifier?這裡的最佳做法是什麼?

tl;dr是的,您可以使用經過訓練的估計器數組構建投票分類器。我不建議這樣做,尤其是因為我對用例了解不多。

我的典型工作流程

  • 在這個用例中可能有多個候選者來構建一個像樣的估計器(假設RandomForest, xgboost, SVM
  • 使用它們中的每一個及其最佳超參數構建一個估計器(這是一種方法
  • 評估上述估計器的預測能力以及它們在不同測試集中的泛化程度(我會在這裡使用交叉驗證
  • 一些/所有候選估計器似乎都很好(這在這裡會有所幫助
  • 構建多個估計器的集合,以獲得更好的預測和/或泛化能力。(我可以在這裡使用VotingClassifier

VotingClassifier主要用於在不同的技術之間進行投票,當然你也可以按照你說的那樣使用它。以下是對交叉驗證的使用和投票的快速介紹。


關於您的用例的想法

**交叉驗證**主要用作檢查過擬合的一種方法。假設您已經確定了分類技術的最佳超參數(我們現在假設為隨機森林),那麼您會想看看模型是否能夠很好地泛化不同的測試集。

在您的情況下,交叉驗證將構建k估計器(假設 k 倍 CV),然後您可以檢查該技術對數據的預測能力和方差,如下所示:

  1. mean的質量度量。越高越好
  2. standard_deviation的質量度量。越低越好 質量測量的高均值和低標準差意味著建模技術做得很好。

假設上述度量看起來不錯,那麼您可以得出結論,使用超參數的隨機森林是一個不錯的候選模型。如果您認為您的分類技術做得足夠好,那麼您還可以使用k來自 CV 的估計器構建一個投票分類器。

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

comments powered by Disqus