Python scikit-learn SGDClassifier()既支持l1,l2又支持弹性,找到正则化参数的最佳值似乎很重要.
我得到了一个建议,使用SGDClassifier()和GridSearchCV()来做这件事,但在SGDClassifier中只提供正则化参数alpha.如果我使用SVM或LogisticRegression等损失函数,我认为参数优化应该有C而不是alpha.使用Logisitic回归或SVM时,有没有办法在SGDClassifier()中设置最佳参数?
另外,我还有一个关于迭代参数n_iter的问题,但我不明白这个参数是什么意思.如果与shuffle选项一起使用,它是否像装袋一样工作?所以,如果我使用l1惩罚和n_iter的大值,它会像RandomizedLasso()一样工作吗?
C
并且alpha
都具有相同的效果.不同之处在于术语的选择.C
与...成正比1/alpha
.您应该GridSearchCV
选择相同alpha
或C
相同的方式,但请记住,更高C
的可能会过度拟合,而较低alpha
的则更容易过度拟合.
L2将产生具有许多小系数的模型,其中L1将选择具有大量0系数和几个大系数的模型.弹性网是两者的结合.
SGDClassifier
使用随机梯度下降,其中数据通过样本逐个学习算法.该n_iter
告诉它有多少通过它应该在的数据.随着迭代次数的增加和学习率的下降,SGD变得更像批量梯度下降,但它也变得更慢.