在 scikit-learn 中将 l1 惩罚与 LogisticRegressionCV() 结合使用
Using l1 penalty with LogisticRegressionCV() in scikit-learn
我正在使用 python scikit-learn 库进行 class化。
作为特征选择步骤,我想使用 RandomizedLogisticRegression()。
因此,为了通过交叉验证找到 C 的最佳值,我使用了 LogisticRegressionCV(penalty='l1', solver='liblinear')。
但是,在这种情况下所有系数都为 0。
使用 l2 惩罚没有问题。此外,带有 l1 惩罚的单个 运行 LogisticRegression() 似乎给出了适当的系数。
我正在使用 RandomizedLasso 和 LassoCV() 进行变通,但我不确定将 LASSO 用于二进制 class 标签是否合适。
所以我的问题是这样的。
- 在我的案例中使用 LogisticRegressionCV() 有什么问题吗?
- 除了 GridSearchCV() 之外,还有其他方法可以为逻辑回归找到 C_ 的最佳值吗?
- 是否可以将 LASSO 用于二进制(不连续)class化?
根据你的描述,我可以说 l1 正则化项的系数在你的情况下很高,你需要降低。
当系数非常高时,正则化项变得比误差项更重要,因此您的模型变得非常稀疏,无法预测任何内容。
我检查了 LogisticRegressionCV,它说它将使用 Cs 参数从 1e-4 搜索到 1e4。该文档说,如果您提供整数,则为了具有较低的正则化系数,您需要具有较高的 Cs。或者,您可以自己提供正则化系数的倒数作为列表。
所以尝试使用 Cs 参数并尝试降低正则化系数。
我正在使用 python scikit-learn 库进行 class化。
作为特征选择步骤,我想使用 RandomizedLogisticRegression()。
因此,为了通过交叉验证找到 C 的最佳值,我使用了 LogisticRegressionCV(penalty='l1', solver='liblinear')。 但是,在这种情况下所有系数都为 0。 使用 l2 惩罚没有问题。此外,带有 l1 惩罚的单个 运行 LogisticRegression() 似乎给出了适当的系数。
我正在使用 RandomizedLasso 和 LassoCV() 进行变通,但我不确定将 LASSO 用于二进制 class 标签是否合适。
所以我的问题是这样的。
- 在我的案例中使用 LogisticRegressionCV() 有什么问题吗?
- 除了 GridSearchCV() 之外,还有其他方法可以为逻辑回归找到 C_ 的最佳值吗?
- 是否可以将 LASSO 用于二进制(不连续)class化?
根据你的描述,我可以说 l1 正则化项的系数在你的情况下很高,你需要降低。
当系数非常高时,正则化项变得比误差项更重要,因此您的模型变得非常稀疏,无法预测任何内容。
我检查了 LogisticRegressionCV,它说它将使用 Cs 参数从 1e-4 搜索到 1e4。该文档说,如果您提供整数,则为了具有较低的正则化系数,您需要具有较高的 Cs。或者,您可以自己提供正则化系数的倒数作为列表。
所以尝试使用 Cs 参数并尝试降低正则化系数。