我已经训练了一个逻辑回归模型。现在我需要用一组新的训练数据来更新(部分拟合)这个模型。这是可能的吗?
回答:
你不能在LogisticRegression
上使用partial_fit
。
但是你可以:
- 使用
warm_start=True
,它会重用上次调用fit
的解决方案作为初始化,以加速收敛。 - 使用
SGDClassifier
并设置loss='log'
,这相当于LogisticRegression
,并且支持partial_fit
。
注意partial_fit
和warm_start
之间的区别。这两种方法都从之前的模型开始并更新它,但partial_fit
只会稍微更新模型,而warm_start
则会在新训练数据上完全收敛,忘记之前的模型。warm_start
仅用于加速收敛。
另见术语表:
warm_start
当在相同数据集上重复拟合估计器,但使用多个参数值(例如在网格搜索中寻找最大化性能的值)时,可以重用从之前参数值学习到的模型方面,节省时间。当
warm_start
为真时,现有的拟合模型属性将用于在后续调用fit
时初始化新模型。请注意,这仅适用于某些模型和某些参数,甚至某些参数值的顺序。例如,
warm_start
可用于构建随机森林以向森林中添加更多树(增加n_estimators
),但不能减少它们的数量。
partial_fit
也保留模型在调用之间的状态,但有所不同:使用warm_start
时,参数会改变,而数据在多次调用fit
时(或多或少)保持不变;使用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
用于重复拟合相同估计器但使用相同数据和不同的参数。