大数据集的增量训练和自动机器学习

数据挖掘 机器学习 训练 自动
2022-02-23 14:40:16

我构建了一个 NLP 句子分类器,它使用来自词嵌入的向量作为特征。

训练数据集很大(100k 个句子)。每个句子都有 930 个特征。

我使用自动机器学习库(auto-sklearn)找到了最佳模型;培训需要 40 GB 的 RAM 和 60 小时。最好的模型是这个库找到的前 N ​​个模型的集合。

偶尔,我需要在训练集中添加一些数据并更新训练由于这个 autoML 库不适合增量训练,所以每次我都需要进行完整的再训练,使用越来越多的内存和时间。

如何解决这个问题?如何进行增量训练?我应该停止使用这个库吗?对于内存和时间使用,并行化训练会更好吗?

1个回答

首先使用auto-sklearn,可以使用

automl.fit(X_train, y_train, dataset_name='X_train',
               feat_type=feature_types)

    print(automl.show_models())

因此您可以从第一次拟合中提取最佳模型的实例。但是,为了逐步学习,您必须(在 sklearn 模型的情况下)具有fit_partially方法。这里的朴素贝叶斯变体和其他算法具有此功能。因此,如果这些不在 show_models 的输出中,那么您就不走运了:在这种情况下,您应该针对 fit_partial 模型进行自己的自动化机器学习。

另一种方法是使用spark它有一些很酷的流(增量学习算法) StreamingKMeansStreamingLinearRegressionWithSGDStreamingLogisticRegressionWithSGD和通常StreamingLinearAlgorithm

总而言之,如果这些是您的问题,我不会使用 auto-sklearn 并选择一些可以并行工作的替代方案。