【问题标题】:Regularization parameter and iteration of SGDClassifier in scikit-learnscikit-learn中SGDClassifier的正则化参数和迭代
【发布时间】:2016-04-06 00:27:15
【问题描述】:

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

我得到了使用 SGDClassifier() 和 GridSearchCV() 的建议,但在 SGDClassifier 中只提供正则化参数 alpha。 如果我使用 SVM 或 LogisticRegression 等损失函数,我认为应该有 C 而不是 alpha 来进行参数优化。 使用 Logisitic Regression 或 SVM 时,有什么方法可以在 SGDClassifier() 中设置最优参数?

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

【问题讨论】:

    标签: python machine-learning scikit-learn


    【解决方案1】:

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

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

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

    【讨论】:

    • 非常感谢。那么如果我想采取逻辑回归的C=0.1的相同效果,我应该将SGDClassifier的alpha设置为10并使用损失函数SVM?
    • "但请记住,较高的 C 更容易过拟合,而较低的 alpha 更容易过拟合。"或者但请记住,较高的 C 更可能过拟合,而较低的 alpha 更可能欠拟合?
    猜你喜欢
    • 2016-08-11
    • 2015-12-19
    • 1970-01-01
    • 2020-03-04
    • 2016-03-11
    • 2014-10-23
    • 2019-03-05
    • 1970-01-01
    • 2017-03-13
    相关资源
    最近更新 更多