哪种模型更适合增量学习?

数据挖掘 支持向量机 机器学习模型 k-nn
2022-02-04 11:38:06

我正在尝试实现人脸识别。我打算使用一些模型(如 DeepFace)来提取判别特征,然后使用分类器来识别人脸。我对使用哪个分类器感到困惑。

我的设置如下:
最初,我将有一些标记的样本并训练一个分类器。然后我开始获得更多标记样本,我想用新数据更新我的分类器。此外,较新的样本可能包含新的类(面孔)。所以,我希望我的分类器也能够学习对新类进行分类。我的问题是哪个分类器更适合这项任务。我也希望获得具有置信度分数的多个预测。

  1. K 最近邻算法:在这里我可以使用距离作为某种形式的置信度得分。
  2. 如此所述,我可以使用 SVM:对初始数据进行训练并单独保留支持向量。当新数据出现时重复该过程。

但是,我不知道上述 2 个分类器是否适合手头的任务或它们将如何执行。非常感谢您对此的任何意见。我也对任何其他分类器持开放态度。谢谢!

2个回答

我会说,这是一个非此即彼的情况
您可以选择“增量/在线”培训添加新课程”中的一个。

您可以通过调整 o/p 层并训练最后几层来对神经网络进行微调。但是这种方法期望新数据与训练集非常相似。
KNN - 可以做在线的东西,但它不做培训。它只是计算预测时的所有距离。因此,计算量没有减少。但是如果它不是最好的
Scikit-Learn SGD 分类器可以帮助进行在线培训但不能支持新课程,你可能不得不在准确性上妥协

对于分类,需要注意的重要一点是,尽管无状态特征提取例程可能能够处理新的/未见的属性,但增量学习器本身可能无法处理新的/未见的目标类。
SGD分类器

其他模型(例如 SVM/DT)自然不支持增量学习。尽管互联网上有建议的方法。但可能并不简单。请参阅这些参考资料。
journalofbigdata一个很好的 SE 阅读我不确定你将如何确定它是否是一个新类,除非你有一个单独的安排,因为模型无论如何都会预测它是一个现有的类。假设你有一个设置。我们可以尝试以下方法 - 直到时间,预测在“已知类别”内 - 进行在线培训。 当数据用于“新类”时,进行全数据训练。 使用这种方法,您可以减少全数据训练的频率。






一个简单的神经网络可以很好地满足这两个目的。您还可以使用它获得类概率。
请也查看这些有用的链接
Creme
Keras + 在线学习

为即将到来的新课程进行增量培训非常困难。一旦您在一次迭代中固定了特征集和类标签,那么您将不得不构建新模型。U 不能在具有不同类别标签的同一模型上重新训练具有不同特征的模型。机器学习模型不支持特征扩展训练。你可以做的是你可以训练 Ensemble 训练,如下所述:

  • 你可以为每个类训练一个单独的模型,这意味着如果你有一个 n 类,那么你将有 n 个模型。如果您在数据集中找到了新类,对您来说会很容易。现在你会遇到的问题是,我如何验证是因为你将获得对所有模型的投票,并且它是矩阵。但是为此,您将为每个训练模型设置 2 个标签,例如“包含类”或“不包含此类”。这就是你可以进行合奏训练的方式。你可以通过收集每个模型的投票来验证模型。

在这里,我假设类标签不是事先定义的,而是来自数据的迭代。

你可以看看这个链接希望这个解释会有所帮助。如果您有新想法,可以将其粘贴到此处。谢谢你。