`warm_start` 参数及其对计算时间的影响
`warm_start` Parameter And Its Impact On Computational Time
我有一个具有一组已定义参数 (warm_start=True
) 的 logistic regression 模型。
一如既往,我调用 LogisticRegression.fit(X_train, y_train)
并使用之后的模型来预测新的结果。
假设我更改了一些参数,例如 C=100
并使用 相同的训练数据 .
再次调用 .fit
方法
理论上,与 warm_start=False
的模型相比,我认为 .fit
第二次应该花费更少的计算时间。然而,根据经验实际上并非如此。
请帮我理解warm_start
参数的概念。
P.S.: I have also implemented SGDClassifier()
for an experimentation.
我希望您理解使用前面的解决方案作为以下适合 warm_start=True
的初始化的概念。
Documentation 声明 warm_start
参数对于 liblinear 求解器没有用,因为没有针对特殊线性情况的有效实现。要补充的是,liblinear 求解器是 LogisticRegression
的默认选择,这基本上意味着权重将在每次新拟合之前完全重新实例化。
要利用 warm_start
参数并减少计算时间,您应该为 LogisticRegression
使用以下求解器之一:
- newton-cg 或 lbfgs 支持 L2 范数惩罚。他们通常也更好地处理多分类问题;
- sag 或 saga 在更大的数据集上收敛速度比 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)
希望对您有所帮助。
我有一个具有一组已定义参数 (warm_start=True
) 的 logistic regression 模型。
一如既往,我调用 LogisticRegression.fit(X_train, y_train)
并使用之后的模型来预测新的结果。
假设我更改了一些参数,例如 C=100
并使用 相同的训练数据 .
.fit
方法
理论上,与 warm_start=False
的模型相比,我认为 .fit
第二次应该花费更少的计算时间。然而,根据经验实际上并非如此。
请帮我理解warm_start
参数的概念。
P.S.: I have also implemented
SGDClassifier()
for an experimentation.
我希望您理解使用前面的解决方案作为以下适合 warm_start=True
的初始化的概念。
Documentation 声明 warm_start
参数对于 liblinear 求解器没有用,因为没有针对特殊线性情况的有效实现。要补充的是,liblinear 求解器是 LogisticRegression
的默认选择,这基本上意味着权重将在每次新拟合之前完全重新实例化。
要利用 warm_start
参数并减少计算时间,您应该为 LogisticRegression
使用以下求解器之一:
- newton-cg 或 lbfgs 支持 L2 范数惩罚。他们通常也更好地处理多分类问题;
- sag 或 saga 在更大的数据集上收敛速度比 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)
希望对您有所帮助。