scikit-learn中SGDClassifier的正则化参数和迭代

Regularization parameter and iteration of SGDClassifier in scikit-learn

Python scikit-learn SGDClassifier() 同时支持 l1、l2 和 elastic,看来找到正则化参数的最优值很重要。

我得到了使用 SGDClassifier() 和 GridSearchCV() 的建议,但在 SGDClassifier 中仅提供正则化参数 alpha。 如果我用损失函数比如SVM或者LogisticRegression,我觉得参数优化应该有C而不是alpha。 使用逻辑回归或 SVM 时,有什么方法可以在 SGDClassifier() 中设置最佳参数吗?

另外,我还有一个关于迭代参数n_iter的问题,但是我没看懂这个参数是什么意思。如果与 shuffle 选项一起使用,它是否像装袋一样工作?所以,如果我使用 l1 惩罚和 n_iter 的大值,它会像 RandomizedLasso() 一样工作吗?

Calpha的效果是一样的。区别在于术语的选择。 C1/alpha 成正比。您应该以相同的方式使用 GridSearchCV 到 select alphaC,但请记住,较高的 C 更有可能过度拟合,而较低的 alpha 更容易过拟合。

L2会产生很多小系数的模型,而L1会选择大量0系数和少量大系数的模型。弹性网是两者的结合。

SGDClassifier 使用随机梯度下降,其中数据通过学习算法样本逐个输入。 n_iter 告诉它应该对数据进行多少次传递。随着迭代次数的增加和学习率的下降,SGD 变得更像批量梯度下降,但它也变得更慢。