sklearn中是否有设置惩罚阈值的参数?
Is there a parameter to set a penalty threshold in sklearn?
我正在为我的数据拟合一个 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
选项中的 none 用阈值优化问题,但老实说,我只熟悉基本形式的算法,所以我不知道那是不是大小写。
您要找的是 C
参数,它基本上是
中的反向 lambda
min: 1/n * ||y - X * beta||^2 + lambda * ||beta||
来自 wiki 的公式(您提供的 link)。
减少 C
与增加上述等式中的 lambda 具有相同的效果(增加上述等式中的 lambda 和减少代码中的 C
将导致更多正则化)。
tol
用作优化算法的停止标准,不用于正则化。
我正在为我的数据拟合一个 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
选项中的 none 用阈值优化问题,但老实说,我只熟悉基本形式的算法,所以我不知道那是不是大小写。
您要找的是 C
参数,它基本上是
min: 1/n * ||y - X * beta||^2 + lambda * ||beta||
来自 wiki 的公式(您提供的 link)。
减少 C
与增加上述等式中的 lambda 具有相同的效果(增加上述等式中的 lambda 和减少代码中的 C
将导致更多正则化)。
tol
用作优化算法的停止标准,不用于正则化。