我建立了一个机器学习模型,目标是预测下一周的目标。通常,新数据将在每周结束时进入并进行处理,并且与以前的数据结构相同。换句话说,相同数量的特征,相同的分类类别等。
我没有针对每周的预测从头开始重新训练模型,而是考虑应用增量学习方法,这样过去的学习不会被完全丢弃,并且模型会(可能)随着时间的推移而提高性能。我正在使用sklearn Python 3。StackOverflow 上只有少数关于此的帖子,但许多答案似乎不一致(可能是由于 sklearn 的 API 更新所致?)。
此处和此处的文档表明,某些 ML 实现可以进行增量/在线学习——这意味着可以将新数据集视为“小批量”,并通过保存/加载模型并.partial_fit()使用相同的模型参数调用来进行增量训练。
尽管所有算法都不能增量学习(即一次看不到所有实例),但所有实现 partial_fit API 的估计器都是候选者。1
与 fit 不同,重复调用 partial_fit 不会清除模型,而是根据提供的数据对其进行更新。提供给 partial_fit 的数据部分可以称为小批量。每个小批量必须具有一致的形状,等等。在迭代估计器中,partial_fit 通常只执行一次迭代。2
但是,这里的文档让我失望。
partial_fit 还保留调用之间的模型,但有所不同:使用 warm_start,参数会发生变化,并且数据在 fit 调用之间(或多或少)是恒定的;使用 partial_fit,小批量数据更改和模型参数保持固定。3
在某些情况下,您希望使用 warm_start 来适应不同但密切相关的数据。3
对于我正在解决的问题,理想情况下,模型参数应该基于交叉验证进行调整,并且由于概念漂移,新数据集的权重应该比旧数据集更大。不过暂时忽略这个,
- 在(3)中,“(或多或少)常数......不同但密切相关的数据”究竟是什么意思?由于新数据集的数据结构相同,我应该调用
estimator(warm_start=True).fit(#new df)还是estimator.partial_fit(#new df)? - 对于诸如 的迭代估计器
sklearn.linear_model.SGDClassifier,使用 时只运行一个 epoch.partial_fit()。如果我想要epochs,在同一个数据集上重复调用它是否与调用.fit()相同 时代开始? - 诸如此类的专用库是否
creme为增量学习提供了任何优势?