`warm_start` 参数及其对计算时间的影响

Muh*_*waz 5 gradient-descent scikit-learn logistic-regression hyperparameters

我有一个带有一组定义的参数 ( ) 的逻辑回归warm_start=True模型。

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

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


.fit从理论上讲,我认为与 的模型相比,第二次应该花费更少的计算时间warm_start=False。然而,根据经验来看,事实并非如此。

请帮我理解参数的概念warm_start

PS:我也进行了SGDClassifier()实验。

E.Z*_*.Z. 4

我希望您理解使用先前的解决方案作为以下拟合的初始化的概念warm_start=True

文档指出该参数对于lib Linearwarm_start求解器毫无用处,因为对于特殊的线性情况没有有效的实现。补充一下,lib Linear求解器是默认选择,这基本上意味着权重将在每次新拟合之前完全重新实例化。LogisticRegression

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

  • newton-cglbfgs,支持 L2 范数惩罚。它们通常也能更好地处理多分类问题;
  • sagsaga在更大的数据集上比lib线性求解器收敛得更快,并且在下降过程中使用多项式损失。

简单的例子

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)
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助。