[英]Using l1 penalty with LogisticRegressionCV() in scikit-learn
我正在使用 python scikit-learn 庫進行分類。
作為特征選擇步驟,我想使用 RandomizedLogisticRegression()。
因此,為了通過交叉驗證找到 C 的最佳值,我使用了 LogisticRegressionCV(penalty='l1',solver='liblinear')。 然而,在這種情況下,所有系數都為 0。 使用 l2 懲罰沒有問題。 此外,帶有 l1 懲罰的 LogisticRegression() 的單次運行似乎給出了適當的系數。
我正在使用 RandomizedLasso 和 LassoCV() 來解決問題,但我不確定將 LASSO 用於二進制類標簽是否合適。
所以我的問題是這樣的。
根據你的描述,我可以說 l1 正則化項的系數在你的情況下很高,你需要減少。
當系數非常高時,正則化項變得比誤差項更重要,因此您的模型變得非常稀疏並且無法預測任何內容。
我檢查了LogisticRegressionCV ,它說它將使用 Cs 參數從 1e-4 搜索到 1e4。 文檔說如果你提供一個整數,為了有較低的正則化系數,你需要有更高的 Cs。 或者,您可以自己提供正則化系數的倒數作為列表。
因此,使用 Cs 參數並嘗試降低正則化系數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.