繁体   English   中英

如何使用新数据更新SVM模型

[英]How to update an SVM model with new data

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

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

2)数据集2具有低维1000个样本(实际数据)。 我想“两个数据集具有相同的分布”

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

在sklearn中,您只能为线性内核和使用SGDClassifier执行此SGDClassifier (适当选择损失/惩罚条款,损失应为铰链,惩罚L2)。 通过partial_fit方法支持增量学习,并且SVCLinearSVC都没有实现。

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

总结一下:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM