Machine learning 机器学习-支持向量机

Machine learning 机器学习-支持向量机,machine-learning,svm,libsvm,supervised-learning,Machine Learning,Svm,Libsvm,Supervised Learning,如果使用核数据中的支持向量机训练模型,则得到的训练模型包含支持向量。现在考虑使用已经存在的旧数据加上少量新数据来训练新模型的情况。 因此: 新数据是否应该与先前形成的模型中的支持向量组合,以形成新的训练集。(如果是,那么如何将支持向量与新的图形数据结合起来?我正在研究libsvm) 或: 新数据和完整的旧数据是否应该组合在一起,形成新的训练集,而不仅仅是支持向量 哪种方法更适合再培训,在准确性和记忆方面更可行、更有效?您必须始终考虑整个新连接的培训集进行再培训。 如果某些“新点”最接近决策边界,

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

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

  • 新数据和完整的旧数据是否应该组合在一起,形成新的训练集,而不仅仅是支持向量

  • 哪种方法更适合再培训,在准确性和记忆方面更可行、更有效?

    您必须始终考虑整个新连接的培训集进行再培训。
    如果某些“新点”最接近决策边界,则“旧”模型的支持向量可能不再是支持向量。在支持向量机的背后有一个必须解决的优化问题,请记住这一点。对于给定的训练集,您可以找到该训练集的最佳解决方案(即支持向量)。一旦数据集发生变化,这样的解决方案可能不再是最优的。
    SVM训练不过是一个最大化问题,其中几何和函数裕度是目标函数。就像最大化给定的函数f(x)…但是你改变了f(x):通过从训练集中添加/删除点,你对决策边界有了更好/最差的理解,因为这样的决策边界是通过采样知道的,而样本确实是训练集中的模式。
    我理解您对时间和内存效率的担忧,但这是一个常见问题:实际上,为所谓的大数据培训支持向量机仍然是一个开放的研究课题(有一些关于反向传播培训的提示),因为这样的优化问题(以及关于哪些拉格朗日乘数应该成对优化的启发式)不容易并行化/分布在几个工人身上

    LibSVM使用著名的序列最小优化算法来训练SVM:如果您需要有关SVM背后的优化问题的更多信息,您可以找到John Pratt关于SMO算法的文章。

    研究社区已经检查并评估了想法1 任何对更快、更智能的aproach(1)——重用支持向量机并添加新数据感兴趣的人,请阅读Dave MUSICANT和Olvi MANGASARIAN发表的关于其方法的研究材料,这些方法被称为“主动支持向量机”

    MATLAB实现:可从

    PDF:
    [1]O.L.Mangasarian,David R.Musicant;
    主动支持向量机分类
    1999
    [2] David R.Musicant,Alexander Feinberg;
    主动集支持向量回归
    ;IEEE神经网络学报,第15卷,第2期,2004年3月


    这是一个关于你的问题的纯理论思考。这个想法不错。但是,它需要扩展一点。我在这里纯粹着眼于收集第一批训练数据的目标

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

    为了理解你的方法的问题,让我们看一下以下支持向量
    (x,y,class)
    (-1,1,+),(-1,-1,+),(1,0,--)
    。超平面是一条穿过零的垂直线。如果你想在下一批中得到点
    (-1,-1.1,-)
    最大边距超平面将倾斜。现在可以利用这一点来节省空间。您可以计算两对支持向量(
    {(-1,1,+),(1,0,-)}
    {(-1,-1,+),(1,0,-)}
    )之间的最小边距超平面(仅在2d中2对。更高维度或非线性内核可能更多)。这基本上是通过这些点的线。之后,你对所有数据点进行分类。然后,你将任何一个模型中的所有错误分类点,加上支持向量添加到第二批。就是这样。剩余的点不相关

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

    一张图片来说明。红色:支持向量,第一批,蓝色,非支持向量,第一批。绿色新点,第二批。 红线第一超平面,绿色最小边距超平面,将蓝色点错误分类,蓝色新超平面(这是手动拟合;)


    所以,若我想专注于结果的准确性,你们会建议对整个数据进行再培训,而忽略内存效率?100%是的。我现在正在使用支持向量机(在LibSVM和Matlab中),我真的理解您的担忧,但这只是编写更好代码的冲刺;)谢谢,非常有帮助!:)这只适用于线性支持向量机。此外,它似乎不允许添加新的数据点和重用SVs:即使Matlab实现也应考虑以前的SVMs模型,但输入参数仅为数据矩阵和标签矩阵。作者简单地陈述了一种更有效的处理线性支持向量机的方法。从论文“我们注意到,主动集计算策略与主动学习无关。”提到严格研究的来源应该对社区有益。当然,学术界提出了公正的结果,也讨论了缺点。否决一篇引文公平吗?有见地的论文,但它是否能适应再培训?如果我记得清楚的话,这是作为一种非终止性处理在他们的a中提出的