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() 一样工作吗?
C
和alpha
的效果是一样的。区别在于术语的选择。 C
与 1/alpha
成正比。您应该以相同的方式使用 GridSearchCV
到 select alpha
或 C
,但请记住,较高的 C
更有可能过度拟合,而较低的 alpha
更容易过拟合。
L2会产生很多小系数的模型,而L1会选择大量0系数和少量大系数的模型。弹性网是两者的结合。
SGDClassifier
使用随机梯度下降,其中数据通过学习算法样本逐个输入。 n_iter
告诉它应该对数据进行多少次传递。随着迭代次数的增加和学习率的下降,SGD 变得更像批量梯度下降,但它也变得更慢。
Python scikit-learn SGDClassifier() 同时支持 l1、l2 和 elastic,看来找到正则化参数的最优值很重要。
我得到了使用 SGDClassifier() 和 GridSearchCV() 的建议,但在 SGDClassifier 中仅提供正则化参数 alpha。 如果我用损失函数比如SVM或者LogisticRegression,我觉得参数优化应该有C而不是alpha。 使用逻辑回归或 SVM 时,有什么方法可以在 SGDClassifier() 中设置最佳参数吗?
另外,我还有一个关于迭代参数n_iter的问题,但是我没看懂这个参数是什么意思。如果与 shuffle 选项一起使用,它是否像装袋一样工作?所以,如果我使用 l1 惩罚和 n_iter 的大值,它会像 RandomizedLasso() 一样工作吗?
C
和alpha
的效果是一样的。区别在于术语的选择。 C
与 1/alpha
成正比。您应该以相同的方式使用 GridSearchCV
到 select alpha
或 C
,但请记住,较高的 C
更有可能过度拟合,而较低的 alpha
更容易过拟合。
L2会产生很多小系数的模型,而L1会选择大量0系数和少量大系数的模型。弹性网是两者的结合。
SGDClassifier
使用随机梯度下降,其中数据通过学习算法样本逐个输入。 n_iter
告诉它应该对数据进行多少次传递。随着迭代次数的增加和学习率的下降,SGD 变得更像批量梯度下降,但它也变得更慢。