gpt4 book ai didi

python - 如何用新数据更新 SVM 模型

转载 作者:太空狗 更新时间:2023-10-30 00:39:24 24 4
gpt4 key购买 nike

我有两个不同大小的数据集。

1) 数据集 1 具有高维度 4500 个样本(草图)。

2) 数据集 2 是低维度的 1000 个样本(真实数据)。我假设“两个数据集具有相同的分布”

我想在第一个数据集上使用 sklearn 训练非线性 SVM 模型(作为预训练),然后我想更新模型在第二个数据集的一部分上(以适应模型)。我怎样才能在 sklearn 上开发一种更新。如何更新 SVM 模型?

最佳答案

In sklearn you can do this only for linear kernel and using SGDClassifier (with appropiate selection of loss/penalty terms, loss should be hinge, and penalty L2). partial_fit 方法支持增量学习,SVCLinearSVC 均未实现。

不幸的是,在实践中,对于这种小数据集,以增量方式拟合 SVM 是毫无用处的。 SVM 具有易于获得的全局解决方案,因此您不需要任何形式的预训练,事实上它应该根本不重要,如果您是考虑神经网络意义上的预训练。如果正确实现,SVM 应该完全忘记以前的数据集。为什么不一次学习整个数据呢?这就是 SVM 应该做的。除非您正在使用 SVM 的一些非凸修改(然后预训练才有意义)。

总结:

  • 从理论和实践的角度来看,预训练 SVM 毫无意义。您可以只在第二个数据集上学习,也可以同时在两个数据集上学习。预训练对于遭受局部最小值(或任何类型的硬收敛)的方法是合理的,因此需要从接近实际解决方案开始才能找到合理的模型(如神经网络)。 SVM 不是其中之一
  • 出于效率原因,您可以使用增量拟合(尽管在 sklearn 中它非常有限),但对于如此小的数据集,您将一次很好地拟合整个数据集。

关于python - 如何用新数据更新 SVM 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35492556/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com