【问题标题】:`warm_start` Parameter And Its Impact On Computational Time`warm_start` 参数及其对计算时间的影响
【发布时间】:2017-08-12 13:56:57
【问题描述】:

我有一个带有一组已定义参数 (warm_start=True) 的 logistic regression 模型。

与往常一样,我致电LogisticRegression.fit(X_train, y_train) 并使用之后的模型来预测新结果。

假设我更改了一些参数,例如 C=100 并使用相同的训练数据再次调用 .fit 方法。


理论上,我第二次认为.fitwarm_start=False 的模型相比应该花费更少的计算时间。然而,从经验上看,实际上并不正确。

请帮我理解warm_start参数的概念。

P.S.:我还实现了SGDClassifier() 进行实验。

【问题讨论】:

    标签: scikit-learn logistic-regression gradient-descent hyperparameters


    【解决方案1】:

    我希望你理解使用前面的解决方案作为初始化的概念,以适应warm_start=True

    Documentation 声明 warm_start 参数对于 liblinear 求解器是无用的,因为对于特殊的线性情况没有有效的实现。另外,liblinear 求解器是 LogisticRegression 的默认选择,这基本上意味着在每次新拟合之前权重将完全重新实例化。

    要利用warm_start 参数并减少计算时间,您应该为LogisticRegression 使用以下求解器之一:

    • newton-cglbfgs 支持 L2-norm 惩罚。它们通常也更擅长处理多分类问题;
    • sagsaga 在更大的数据集上收敛速度比 liblinear 求解器更快,并在下降过程中使用多项损失。

    简单示例

    from sklearn.linear_model import LogisticRegression
    
    X = [[1, 2, 3], [4, 5, 6], [1, 2, 3]]
    y = [1, 0, 1]
    
    # warm_start would work fine before each new fit
    clf = LogisticRegression(solver='sag', warm_start=True)
    
    clf.fit(X, y)
    

    希望对你有帮助。

    【讨论】:

    • 谢谢,@E.Z。最初,当我研究文档时,我阅读了它,但在实验时,我错过了这一点。
    猜你喜欢
    • 1970-01-01
    • 2018-09-25
    • 2018-06-10
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多