我有一个基于一百万个数据集(文本的监督分类)训练的ML模型,但是我希望相同模型在新的数据集出现时再次得到训练(训练数据)。此过程是连续的,我不希望每次模型的预测每次接收新数据集时都可以松散我不想将新数据与我的历史数据(100万个数据)合并以进行再次训练。我的目的是希望这个模型逐渐成长,看到一段时间内所有新数据集,从而保持模型的智能性。每次避免重新训练历史数据,最好的python方法是什么?代码示例对我有帮助。
答案 0 :(得分:0)
您想了解一下在线学习技术。许多scikit-learn
算法都可以选择对partial_fit
数据进行处理,这意味着您可以对小批量数据进行增量训练。
在线学习问题的常见方法是使用SGDClassifier
,该方法是通过抽取一部分样本在每次迭代中更新模型的参数来进行训练的,因此很自然地可以解决在线学习问题。但是,仍然必须通过方法partial_fit
对模型进行训练,否则它将重新训练整个模型。
SGD允许进行小批量(在线/核心外)学习,请参阅partial_fit方法
这是一个说明这个想法的玩具例子:
clf = linear_model.SGDClassifier()
clf.partial_fit(x,y)
x_new = new_data
y_new = new_labels
clf.partial_fit(x_new ,y_new)
答案 1 :(得分:0)
您正在寻找的是渐进式学习,有一个名为 creme 的优秀库可以帮助您实现这一点。
库中的所有工具都可以通过一次观察更新,因此可用于从流数据中学习。
以下是使用 creme(以及一般的在线机器学习)的一些好处:
增量:模型可以实时更新自己。 自适应:模型可以适应概念漂移。 生产就绪:使用数据流可以轻松地在模型开发期间复制生产场景。 高效:模型不需要重新训练,并且需要很少的计算能力,这降低了它们的碳足迹 快速:当目标是一次学习和预测单个实例时,creme 比 PyTorch、Tensorflow 和 scikit-learn 快一个数量级。 ? 特点