【问题标题】:How to update Logistic Regression Model?如何更新逻辑回归模型?
【发布时间】:2019-01-06 18:35:34
【问题描述】:

我已经训练了一个逻辑回归模型。现在我必须用新的训练数据集更新(部分拟合)模型。有可能吗?

【问题讨论】:

  • 一些 Sklearn 估计器实现了partial_fit 方法。更多here.

标签: machine-learning scikit-learn logistic-regression machine-learning-model


【解决方案1】:

不能LogisticRegression上使用partial_fit

但你可以:

  • 使用warm_start=True,它重用之前调用fit的解决方案作为初始化,加快收敛速度​​。
  • SGDClassifierloss='log' 一起使用,这相当于LogisticRegression,并支持partial_fit

注意partial_fitwarm_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_startfit 的调用序列中的所有数据都必须包含来自每个类的样本。

__

partial_fit

有助于以在线方式拟合估算器。与fit 不同,重复调用partial_fit 不会清除模型,而是根据提供的数据对其进行更新。提供给partial_fit 的部分数据可以称为小批量。每个小批量必须具有一致的形状等。

partial_fit 也可用于核外学习,尽管通常仅限于可以在线执行学习的情况,即模型在每次 partial_fit 后都可用,并且不需要单独处理来完成模型. cluster.Birch 引入了调用 partial_fit(X) 将生成一个未完成的模型的约定,但可以通过调用 partial_fit() 完成模型,即无需传递进一步的小批量。

通常,不应在调用 partial_fit 之间修改估算器参数,尽管 partial_fit 应验证它们以及新的小批量数据。相比之下,warm_start 用于重复使用相同的数据但不同的参数拟合相同的估计器。

【讨论】:

  • 非常感谢您的回复,目前我正在使用 SGD 分类器,但这个分类器的问题是每次针对同一数据集给我不同的准确度级别
  • 这是由于SGDClassifier 的随机求解器。要获得确定性行为,您可以在 random_state 参数中放入一个整数。
猜你喜欢
  • 2018-05-21
  • 2022-10-04
  • 2020-12-22
  • 1970-01-01
  • 2018-01-26
  • 2019-06-01
  • 2014-11-21
  • 2021-09-07
  • 2021-04-28
相关资源
最近更新 更多