Scikit learn `warm_start参数及其对计算时间的影响
我有一个定义了一组参数的模型(Scikit learn `warm_start参数及其对计算时间的影响,scikit-learn,logistic-regression,gradient-descent,hyperparameters,Scikit Learn,Logistic Regression,Gradient Descent,Hyperparameters,我有一个定义了一组参数的模型(warm\u start=True) 和往常一样,我调用LogisticRegression.fit(X\u-train,y\u-train)并在之后使用模型预测新的结果 假设我更改了一些参数,例如,C=100,并使用相同的训练数据再次调用.fit方法 理论上,第二次,我认为.fit比warm\u start=False的模型需要更少的计算时间。然而,从经验上看,事实并非如此 请帮助我理解warm\u start参数的概念 另外:我还为一个实验实现了sgdclas
warm\u start=True
)
和往常一样,我调用LogisticRegression.fit(X\u-train,y\u-train)
并在之后使用模型预测新的结果
假设我更改了一些参数,例如,C=100
,并使用相同的训练数据再次调用.fit
方法
理论上,第二次,我认为
.fit
比warm\u start=False
的模型需要更少的计算时间。然而,从经验上看,事实并非如此
请帮助我理解warm\u start
参数的概念
另外:我还为一个实验实现了sgdclassizer()
我希望您理解使用上一个解决方案作为以下fit的初始化的概念,即
warm\u start=True
声明warm\u start
参数对liblinear solver无效,因为对于特殊的线性情况没有工作实现。另外,liblinear solver是LogisticRegression
的默认选择,这基本上意味着在每次新拟合之前,权重将完全重新实例化
要使用warm\u start
参数并减少计算时间,您应该为logisticReturnal
使用以下解算器之一:
- 牛顿cg或lbfgs支持L2标准惩罚。它们通常在处理多分类问题时效果更好李>
- sag或saga在更大的数据集上的收敛速度比liblinear SOVER更快,并在下降过程中使用多项式损失
简单例子
我希望这能有所帮助。谢谢,@E.Z.起初,当我研究文档时,我读了它,但在实验中,我忽略了这一点。
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)