2016-10-11 27 views
0

在scikit-learn中,C是正則化強度的倒數(link)。除了我使用三個不同的C(即0.1,1.0和10.0)之外,我已經手動計算了三次具有相同參數和條件的訓練。我比較了驗證集中的F分數,並確定了「最佳」C.但是,有人告訴我這是錯誤的,因爲我不應該使用驗證集來優化C.我應該如何選擇正確的C?如果我要從scikit-learn中選擇默認C(= 1.0),我有什麼理由?如何在python scikit-learn中找到邏輯迴歸中的正則化參數?

回答

1

我該如何選擇合適的C?

你應該有三折的數據集:培訓,驗證和測試。你在火車上訓練,在驗證上設置超參數並最終在測試中評估。特別是,當數據量較小時,可以使用k倍CV時尚進行此操作,您首先將CV用於列車測試分割,然後是另一個CV分割,將訓練進一步分解爲實際的訓練和驗證。

如果我要從scikit-learn中選擇默認C(= 1.0),我有什麼理由?

除了在權重上放置任意先驗值(因此任何其他值將被同等證明)之外,沒有任何理由。

+0

在基於測試集的性能來選擇C的情況下,它是否是過度擬合的例子?我想了解爲什麼這樣做不好。 – KubiK888

+0

它不是**過度擬合的例子**,它是** invalid estimator **的例子,只是你不能相信以這種方式選擇的模型。它與這種意義上的過度擬合有關,它可以導致這個問題,但問題更深入 - 只要你使用數據來做出有關模型的任何**決策以及它的評估 - 評估就是**偏向**,因此 - 無用。 – lejlot