Cross-Validation
如何使用交叉驗證模型進行預測?
我想做以下步驟:
- 使用交叉驗證訓練模型
- 使用該模型進行未來預測(包括我的測試集)
cross_val_predict只給我它對訓練集的預測。在那之後,我的分類器在哪裡保存以備將來預測?我發現最接近的是運行cross_validate和 set
return_estimator=True
。這給了我一個訓練有素的估計器數組,因為它為每個折疊創建一個單獨的實例。這是否意味著我現在被困在所有未來預測的集成 k 模型中?如果是這樣,有沒有一種方便的方法可以做到這一點?也許使用VotingClassifier?這裡的最佳做法是什麼?
tl;dr是的,您可以使用經過訓練的估計器數組構建投票分類器。我不建議這樣做,尤其是因為我對用例了解不多。
我的典型工作流程
- 在這個用例中可能有多個候選者來構建一個像樣的估計器(假設
RandomForest
,xgboost
,SVM
)- 使用它們中的每一個及其最佳超參數構建一個估計器(這是一種方法)
- 評估上述估計器的預測能力以及它們在不同測試集中的泛化程度(我會在這裡使用交叉驗證)
- 一些/所有候選估計器似乎都很好(這在這裡會有所幫助)
- 構建多個估計器的集合,以獲得更好的預測和/或泛化能力。(我可以在這裡使用VotingClassifier)
VotingClassifier主要用於在不同的技術之間進行投票,當然你也可以按照你說的那樣使用它。以下是對交叉驗證的使用和投票的快速介紹。
關於您的用例的想法
**交叉驗證**主要用作檢查過擬合的一種方法。假設您已經確定了分類技術的最佳超參數(我們現在假設為隨機森林),那麼您會想看看模型是否能夠很好地泛化不同的測試集。
在您的情況下,交叉驗證將構建
k
估計器(假設 k 倍 CV),然後您可以檢查該技術對數據的預測能力和方差,如下所示:
mean
的質量度量。越高越好standard_deviation
的質量度量。越低越好 質量測量的高均值和低標準差意味著建模技術做得很好。假設上述度量看起來不錯,那麼您可以得出結論,使用超參數的隨機森林是一個不錯的候選模型。如果您認為您的分類技術做得足夠好,那麼您還可以使用
k
來自 CV 的估計器構建一個投票分類器。