机器学习 - SVM

时间:2016-02-15 15:04:36

标签: machine-learning svm libsvm supervised-learning

如果使用来自内核数据的SVM训练模型,则得到的训练模型包含支持向量。现在考虑使用已经存在的旧数据加上少量新数据来训练新模型的情况。 SO:

  1. 新数据是否应与来自先前形成的模型的支持向量组合以形成新的训练集。 (如果是,那么如何将支持向量与新的图形数据相结合?我正在研究libsvm
  2. 或者:

    1. 新数据和完整的旧数据是否应该组合在一起形成新的训练集而不仅仅是支持向量?
    2. 哪种方法更适合再培训,在准确性和记忆方面更有效和更有效?

3 个答案:

答案 0 :(得分:4)

你必须经常重新考虑整个新连接的训练集 在某些“新点”最接近决策边界的情况下,来自“旧”模型的支持向量可能不再是支持向量。在SVM背后有一个必须解决的优化问题,请记住这一点。使用给定的训练集,您可以找到该训练集的最佳解(即支持向量)。一旦数据集发生变化,这种解决方案就不再是最优的了 SVM训练只不过是一个最大化问题,其中几何和功能边缘是目标函数。就像最大化一个给定的函数 f(x) ...然后你改变 f(x):通过添加/删除训练集中的点你有一个更好的/对决策边界的理解最差,因为这样的决策边界是通过抽样得知的,其中样本确实是训练集中的模式 我理解您关注时间和内存效率,但这是一个常见问题:确实为所谓的大数据训练SVM仍然是一个开放的研究课题(有一些关于反向传播培训的提示),因为这样的优化问题(以及拉格朗日乘数应该成对优化的启发式算法)并不容易在几个工人上并行/分配。

LibSVM使用众所周知的Sequential Minimal Optimization算法来训练SVM:here如果您需要有关SVM背后优化问题的更多信息,可以找到John Pratt关于SMO算法的文章。

答案 1 :(得分:2)

已经检查过Idea 1&由研究界评估

任何对更快更智能的方法感兴趣的人(1) - 重新使用支持向量并添加新数据 - 请审阅由Dave MUSICANT和Olvi MANGASARIAN发布的研究材料,其方法称为 {{1 }}

  

MATLAB 实施:可从http://research.cs.wisc.edu/dmi/asvm/获取   

PDF:
[1] O. L. Mangasarian,David R. Musicant; "Active Support Vector Machine"; 1999   
[2] David R. Musicant,Alexander Feinberg;的 Active Support Vector Machine Classification ; IEEE神经网络交易,VOL。 15,不。 2,2004年3月

答案 2 :(得分:1)

这是对你的问题的纯粹理论思考。这个想法还不错。但是,它需要延长一点。我在这里纯粹是为了从第一批中提取训练数据的目标。

主要问题 - 这就是为什么这纯粹是理论上的 - 是你的数据通常不是线性可分的。那么错误分类的点非常重要。他们会破坏我在下面写的东西。此外,这个想法需要一个线性内核。但是,有可能推广到其他内核

要了解您的方法存在的问题,请查看以下支持向量(x,y,class)(-1,1,+),(-1,-1,+),(1,0,-)。超平面是一条直到零的垂直线。如果您在下一批中有点(-1,-1.1,-),则最大边距超平面会倾斜。现在可以将其用于稀疏化。你可以计算 - 支持向量的两对({(-1,1,+),(1,0,-)}{(-1,-1,+),(1,0,-)})之间的最小边缘超平面(在2d中只有2对。更高的维度或非线性内核可能更多)。这基本上是贯穿这些要点的路线。然后,您将所有数据点分类。然后在任一模型中添加所有错误分类的点,再添加第二批的支持向量。而已。其余的要点无关紧要。

除了上面提到的C / Nu问题。维数的诅咒显然会在这里杀死你

要说明的图像。红色:支持向量,批量一个,蓝色,非支持向量批量一个。绿色新点二批。 红线第一个超平面,绿色最小边缘超平面,错误分类蓝点,蓝色新超平面(它是一个手适合;))

enter image description here