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()一样工作吗?
答案 0 :(得分:8)
C
和alpha
都具有相同的效果。不同之处在于术语的选择。 C
与1/alpha
成比例。您应该使用GridSearchCV
以同样的方式选择alpha
或C
,但请记住,较高的C
更有可能过度拟合,alpha
更低更容易过度适应。
L2将产生具有许多小系数的模型,其中L1将选择具有大量0系数和几个大系数的模型。弹性网是两者的结合。
SGDClassifier
使用随机梯度下降,其中数据通过样本逐个学习算法。 n_iter
告诉它应该对数据传递多少次。随着迭代次数的增加和学习率的下降,SGD变得更像批量梯度下降,但它也变得更慢。