Answers:
机器学习中的流设置称为“在线学习”。在线设置中没有确切的支持向量机(因为目标功能的定义本质上是批处理设置)。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 ķ × d吨X吨Ŷ吨 = w ^ X吨W¯¯ 吨以便将来避免该错误。这里的最小变化是根据Frobenius规范定义的。
我总是发现隐式更新框架(包括此处另一个答案中提到的被动攻击性算法)比显式更新框架不必要地复杂(更不用说隐式更新可能比显式更新慢得多),除非提供用于隐式更新的封闭式解决方案)。
在线重要性权重感知更新是最先进的显式更新算法的示例,该算法比其隐式对应算法更简单,更快,更灵活(支持多种损失函数,多种惩罚,成本敏感型学习等)。本文仅涉及线性模型(线性svm对应于具有二次惩罚的铰链损失函数的情况)
由于您需要多类分类,因此一种方法是使用vowpal wabbit的“ reductions”功能(建立在本文的方法顶部),但不幸的是,该功能没有得到很好的记录。
请参阅论文SVM增量学习,适应和优化,该论文提出了用于二进制分类的在线SVM。
上面的代码可以在这里找到。在代码中,介绍了两种在线培训方式:
svmtrain()
,一次在一个示例上逐步训练SVM。svmtrain2()
。回到您的问题,对于一次流式学习一个示例,答案显然是肯定的。而且代码还可以处理未学习(丢弃)的示例,即精确的和近似的留一法(LOO)错误估计-通过一次完全不学习一个示例并测试分类器,可以有效地计算出精确的LOO错误估计。这个例子。