【问题标题】:Can an SVM learn incrementally?SVM 可以增量学习吗?
【发布时间】:2023-11-25 06:14:01
【问题描述】:

我正在使用多维 SVM 分类器(SVM.NET,libSVM 的包装器)对一组特征进行分类。

给定一个 SVM 模型,是否可以合并新的训练数据而无需重新计算所有先前的数据?我想另一种说法是:SVM 是可变的吗?

【问题讨论】:

  • 我开始阅读 Bishop 的书来帮助回答这个问题,但我相信您可能会在 mathoverflow.net 得到更深入的答案

标签: c# machine-learning svm libsvm


【解决方案1】:

实际上,它通常称为增量学习。这个问题以前提出过,在这里得到了很好的回答:A few implementation details for a Support-Vector Machine (SVM)

简而言之,这可能但并不容易,您必须更改正在使用的库或自己实现训练算法。

我找到了两种可能的解决方案,SVMHeavyLaSVM,它们支持增量训练。但我没用过,对它们一无所知。

【讨论】:

  • 谢谢,我将问题标题更改为更准确。你提到的问题是我的一个很好的答案。
  • @larsmans 好点。它有时也与主动学习混淆/混为一谈。
【解决方案2】:

在线和增量虽然相似但略有不同。在网上,它通常可以配置单遍(epoch=1)或epoch数。其中,增量意味着您已经有一个模型;不管它是如何构建的,但是模型可以被新的例子改变。此外,通常需要在线和增量相结合。

这是一个工具列表,其中包含一些关于在线和/或增量 SVM 的评论:https://stats.stackexchange.com/questions/30834/is-it-possible-to-append-training-data-to-existing-svm-models/51989#51989

【讨论】: