SVM可以一次进行流学习吗?


33

我有一个流数据集,示例一次可用。我需要对它们进行多类分类。一旦将培训示例提供给学习过程,我就必须放弃该示例。同时,我还使用最新模型对未标记的数据进行预测。

据我所知,神经网络能够通过一次提供一个示例并对该示例执行正向传播和反向传播来进行流学习。

SVM可以一次执行流学习一个示例并立即丢弃该示例吗?


2
接受的答案应进行更新。目前似乎有一些支持SVM在线学习算法的库。Vowpal wabbit减少了svm,其他替代方法是:scikit-learn,sofia-ml和R的kernlab软件包提供了一些在线学习选项。
marbel 2015年

Answers:


22

机器学习中的流设置称为“在线学习”。在线设置中没有确切的支持向量机(因为目标功能的定义本质上是批处理设置)。SVM到在线设置的最直接概括可能是被动进取算法。代码位于http://webee.technion.ac.il/people/koby/code-index.html,相关论文位于http://eprints.pascal-network.org/archive/00002147/01/CrammerDeKeShSi06。 pdf格式

基本思想是,一个数据以与查询点,其中是标签数。该算法在迭代维持权重矩阵,算法接收到数据点,然后给出预测分数每个标签,它会将得分最高的标签预测为真实标签。如果预测错误,则算法对变化最小X[R ķ W¯¯ [R ķ × dXŶ = w ^ XW¯¯ Xÿ[Rd×[ķ]X[Rķw ^Ť[Rķ×dŤXŤÿ^Ť=w ^XŤw ^Ť以便将来避免该错误。这里的最小变化是根据Frobenius规范定义的。


1
(+1),Mark,欢迎访问该网站。
主教2012年

11

我总是发现隐式更新框架(包括此处另一个答案中提到的被动攻击性算法)比显式更新框架不必要地复杂(更不用说隐式更新可能比显式更新慢得多),除非提供用于隐式更新的封闭式解决方案)。

在线重要性权重感知更新是最先进的显式更新算法的示例,该算法比其隐式对应算法更简单,更快,更灵活(支持多种损失函数,多种惩罚,成本敏感型学习等)。本文仅涉及线性模型(线性svm对应于具有二次惩罚的铰链损失函数的情况)

由于您需要多类分类,因此一种方法是使用vowpal wabbit的“ reductions”功能(建立在本文的方法顶部),但不幸的是,该功能没有得到很好的记录。


8

LASVM是SVM最受欢迎的在线学习版本之一。

像任何线性模型一样,也可以使用随机梯度下降来训练线性SVM。


为了清楚
起见

6

请参阅论文SVM增量学习,适应和优化,该论文提出了用于二进制分类的在线SVM。

上面的代码可以在这里找到。在代码中,介绍了两种在线培训方式:

  1. 通过调用svmtrain(),一次在一个示例上逐步训练SVM。
  2. 执行批量培训,通过调用将所有培训示例同时添加到解决方案中svmtrain2()

回到您的问题,对于一次流式学习一个示例,答案显然是肯定的。而且代码还可以处理未学习(丢弃)的示例,即精确的和近似的留一法(LOO)错误估计-通过一次完全不学习一个示例并测试分类器,可以有效地计算出精确的LOO错误估计。这个例子。


(+1)欢迎来到我们的网站!
ub

0

使用内核的在线学习讨论了一般内核设置中的在线学习。

摘要摘录-

基于内核的算法(例如支持向量机)在批次设置中的各种问题上已经取得了相当大的成功,在这些情况下,所有训练数据都可以提前获得。支持向量机将所谓的内核技巧与大幅度的想法结合在一起。很少在适合实时应用的在线环境中使用这些方法,本文考虑在重现内核希尔伯特空间中进行在线学习,通过考虑特征空间内的经典随机梯度下降以及一些简单易用的技巧,我们针对各种问题(例如分类,回归和新颖性检测)开发了简单且计算效率高的算法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.