当前位置: 首页 > 面试题库 >

sklearn中的SVM是否支持增量(在线)学习?

全兴运
2023-03-14
问题内容

我目前正在设计文本文章的推荐系统(“有趣”或“不有趣”的二进制情况)。我的规范之一是它应该不断更新以适应不断变化的趋势。

据我所知,最好的方法是利用支持增量/在线学习的机器学习算法。

Perceptron和Winnow之类的算法支持在线学习,但是我对支持向量机并不完全确定。scikit-learn
python库是否支持在线学习,如果支持,支持向量机是可以利用它的算法之一吗?

我显然并不完全依赖于使用支持向量机,但是由于它们的全面性能,它们通常是二进制分类算法。最后,我愿意改变为最合适的方式。


问题答案:

尽管确实存在用于SVM的在线算法,但是指定要内核还是线性SVM变得很重要,因为针对线性SVM的特殊情况已经开发了许多有效的算法。

对于线性情况,如果您在scikit-learn中将SGD分类器与铰链损耗和L2正则化配合使用,您将获得一个可以在线/增量更新的SVM。您可以将其与近似于内核的特征转换结合使用,以类似于在线内核SVM。

我的规范之一是它应该不断更新以适应不断变化的趋势。

这被称为 概念漂移,
不能通过简单的在线SVM很好地处理。使用PassiveAggresive分类器可能会给您带来更好的结果,因为它的学习率不会随着时间而降低。

假设您在训练/跑步时获得了反馈,则可以尝试检测准确性随时间的降低,并在准确性开始下降时开始训练新模型(并在您认为新模型变得更准确时切换到新模型)。JSAT有2种漂移检测方法(请参阅jsat.driftdetectors),可用于跟踪准确性并在准确性发生变化时向您发出警报。

它还具有更多在线线性和核方法。

(偏见:我是JSAT的作者)。



 类似资料:
  • 支持向量机(SVM)是一类按监督学习方式对数据进行二元分类的广义线性分类器,其决策边界是对学习样本求解的最大边距超平面,可以将问题化为一个求解凸二次规划的问题。与逻辑回归和神经网络相比,支持向量机,在学习复杂的非线性方程时提供了一种更为清晰,更加强大的方式。

  • 问题内容: 一个人如何使用Maven支持增量构建?那里有指南吗?(Google的最佳搜索结果令人失望) 问题答案: Maven默认情况下以增量方式生成,但是事实证明,编译器插件(即javac的核心)是如此之快,以至于每次构建新代码都不会成为代码库大小合理的瓶颈,而不是与构造大型程序集或运行大型测试进行比较套房。(与大多数语言一样,Java的编译速度比C ++快得多。)

  • 综述 “看二更云,三更月,四更天。” 本文采用编译器:jupyter    给定训练样本集D,分类学习最基本的想法就是基于训练集D的样本空间中找到一个划分超平面,将不同类别的样本分开。但能将训练样本分开但划分超平面可能有很多,如图。 存在多个划分超平面将两类训练样本分开 直观上看,应该去找位于两类训练样本"正中间"的划分超平面,即图中粗线的那个,因为该划分超平面对训练样本局部扰动的"容忍性"最好。

  • 我正在用支持向量回归预测股票价格。我已经训练了一些价值,但当我预测的价值,每次我都必须训练的基础上(在线学习)。因此,我已经传递了这些值,以便在预测后在循环中进行训练。 那么,当我每次调用fit函数时,svr训练是如何基于一个输入在内部工作的呢?

  • @subpage tutorial_py_svm_basics_cn 了解 SVM 的基本知识。 @subpage tutorial_py_svm_opencv_cn 学习使用 OpenCV 中的 SVM 功能。

  • 参考资料:http://www.cppblog.com/sunrise/archive/2012/08/06/186474.html                       http://blog.csdn.net/sunanger_wang/article/details/7887218 我的数据挖掘算法代码:https://github.com/linyiqun/DataMiningAlg