sklearn中是不是有设置惩罚阈值的参数?
Posted
技术标签:
【中文标题】sklearn中是不是有设置惩罚阈值的参数?【英文标题】:Is there a parameter to set a penalty threshold in sklearn?sklearn中是否有设置惩罚阈值的参数? 【发布时间】:2021-03-22 06:52:00 【问题描述】:作为特征选择过程的一部分,我正在为我的数据拟合一个 sklearn.linear_model.LogisticRegression
模型,并带有 L1 惩罚。据我了解,使用penalty='l1'
意味着优化过程将在所有系数的绝对值之和小于给定阈值(as explained here)的情况下最小化成本函数。
是否有参数声明系数绝对值之和的阈值?
这是我的分类器:
clf = LogisticRegression(penalty='l1', dual=False, tol=0.01, C=1.0,
fit_intercept=True, intercept_scaling=1,
random_state=0, solver='saga', max_iter=500,
multi_class='auto', n_jobs=-1)
也许solver
选项都没有通过阈值优化问题,但老实说,我只熟悉基本形式的算法,所以我不知道是不是这样。
【问题讨论】:
【参考方案1】:您正在寻找的是C
参数,它基本上是在
min: 1/n * ||y - X * beta||^2 + lambda * ||beta||
来自 wiki 的方程式(您提供的 link)。
减少C
与增加上述等式中的 lambda 具有相同的效果(增加上述等式中的 lambda 和减少代码中的C
都会导致更多的正则化)。
tol
被用作优化算法的停止标准,而不是正则化。
【讨论】:
哦,太好了!反向 lambda 是指 1/lambda,对吗? 基本上是的。因此,您不能将其设置为 0。以上是关于sklearn中是不是有设置惩罚阈值的参数?的主要内容,如果未能解决你的问题,请参考以下文章