4

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

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

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


从理论上讲,第二次,我认为.fitwarm_start=False. 然而,从经验上看,实际上并不正确。

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

PS:我也实现SGDClassifier()了一个实验。

4

1 回答 1

3

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

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

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

  • 支持 L2 范数惩罚的newton-cglbfgs 。它们通常也更好地处理多分类问题;
  • 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)

我希望这会有所帮助。

于 2017-08-12T17:01:05.123 回答