scikit-learn中SGDC分类器的正则化参数和迭代

时间:2016-01-01 13:19:16

标签: python machine-learning scikit-learn

Python scikit-learn SGDClassifier()支持l1,l2和elastic,找到正则化参数的最佳值似乎很重要。

我有建议使用SGDClassifier()和GridSearchCV()来做这件事,但在SGDClassifier中只提供正则化参数 alpha 。 如果我使用SVM或LogisticRegression等损失函数,我认为参数优化应该有 C 而不是alpha。 使用Logisitic回归或SVM时,有没有办法在SGDClassifier()中设置最佳参数?

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

1 个答案:

答案 0 :(得分:8)

Calpha都具有相同的效果。不同之处在于术语的选择。 C1/alpha成比例。您应该使用GridSearchCV以同样的方式选择alphaC,但请记住,较高的C更有可能过度拟合,alpha更低更容易过度适应。

L2将产生具有许多小系数的模型,其中L1将选择具有大量0系数和几个大系数的模型。弹性网是两者的结合。

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