【发布时间】:2019-01-06 18:35:34
【问题描述】:
我已经训练了一个逻辑回归模型。现在我必须用新的训练数据集更新(部分拟合)模型。有可能吗?
【问题讨论】:
-
一些 Sklearn 估计器实现了
partial_fit方法。更多here.
标签: machine-learning scikit-learn logistic-regression machine-learning-model
我已经训练了一个逻辑回归模型。现在我必须用新的训练数据集更新(部分拟合)模型。有可能吗?
【问题讨论】:
partial_fit 方法。更多here.
标签: machine-learning scikit-learn logistic-regression machine-learning-model
你不能在LogisticRegression上使用partial_fit。
但你可以:
warm_start=True,它重用之前调用fit的解决方案作为初始化,加快收敛速度。SGDClassifier 与loss='log' 一起使用,这相当于LogisticRegression,并支持partial_fit。注意partial_fit 和warm_start 之间的区别。两种方法都从之前的模型开始并对其进行更新,但partial_fit 只对模型进行了轻微的更新,而warm_start 则一路收敛于新的训练数据,忘记了之前的模型。 warm_start 仅用于加速收敛。
另见the glossary:
warm_start当在同一个数据集上重复拟合一个估计器时,但是对于多个参数值(例如在网格搜索中找到最大化性能的值),可以重用从先前参数值中学习的模型的各个方面,节约时间。当
warm_start为真时,现有拟合模型属性用于在后续调用fit时初始化新模型。请注意,这仅适用于某些模型和某些参数,甚至某些参数值的顺序。例如,
warm_start可用于构建随机森林以向森林添加更多树(增加n_estimators)但不能减少它们的数量。
partial_fit还保留调用之间的模型,但有所不同:使用warm_start时,参数会发生变化,并且数据在调用之间(或多或少)保持不变;使用partial_fit,小批量数据变化和模型参数保持不变。在某些情况下,您希望使用
warm_start来适应不同但密切相关的数据。例如,最初可能适合数据的一个子集,然后在整个数据集上微调参数搜索。对于分类,warm_start对fit的调用序列中的所有数据都必须包含来自每个类的样本。
__
partial_fit有助于以在线方式拟合估算器。与
fit不同,重复调用partial_fit不会清除模型,而是根据提供的数据对其进行更新。提供给partial_fit的部分数据可以称为小批量。每个小批量必须具有一致的形状等。
partial_fit也可用于核外学习,尽管通常仅限于可以在线执行学习的情况,即模型在每次 partial_fit 后都可用,并且不需要单独处理来完成模型.cluster.Birch引入了调用partial_fit(X)将生成一个未完成的模型的约定,但可以通过调用partial_fit()完成模型,即无需传递进一步的小批量。通常,不应在调用
partial_fit之间修改估算器参数,尽管partial_fit应验证它们以及新的小批量数据。相比之下,warm_start用于重复使用相同的数据但不同的参数拟合相同的估计器。
【讨论】:
SGDClassifier 的随机求解器。要获得确定性行为,您可以在 random_state 参数中放入一个整数。