机器学习 – 支持向量机

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

  1. 是否应该将新数据与之前模型中的支持向量结合起来,形成新的训练集?(如果是,那么如何将支持向量与新的图数据结合?我正在使用libsvm

或者:

  1. 是否应该将新数据和全部旧数据结合起来形成新的训练集,而不仅仅是支持向量?

哪种方法在重新训练时更好,更可行,并且在准确性和内存使用方面更有效?


回答:

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

LibSVM使用众所周知的顺序最小优化算法来训练SVM:这里你可以找到约翰·普拉特关于SMO算法的文章,如果你需要关于SVM背后优化问题的更多信息。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注