MATLAB 的 svmtrain :保存支持向量索引而不是支持向量本身
Posted
技术标签:
【中文标题】MATLAB 的 svmtrain :保存支持向量索引而不是支持向量本身【英文标题】:MATLAB's svmtrain : save support vector indexes instead of support vectors themselves 【发布时间】:2013-12-01 03:55:11 【问题描述】:我正在研究一个机器学习问题,该问题需要我使用多个支持向量机。它工作得比较好;然而,问题在于每个 SVM 的支持向量机的数量往往很大(~2,000),输入特征的数量在 50,000 左右。我需要大约 100 个 SVM。
在我的笔记本电脑上运行它会很快耗尽所有可用内存;我认为这是因为svmtrain
创建了一个 SVM,它保存了所有支持向量(即有另一个副本)。由于我保留了原始训练数据,我想知道是否有一种方法可以指示它将索引保存到这些支持向量中,这样会使用更少的内存?或者另一种减少每个 SVM 所需内存量的方法?
【问题讨论】:
我不知道您的问题的确切解决方案,但可以提出替代方案。一旦你的 svm 被训练和使用并且不再需要你可以通过调用“clear”来释放它的内存。这种方式释放的内存可以分配给训练和存储 svm 的下一个实例。这样计算机就不会存储任何不必要的数据。 @MohitJain:是的,当然,但我需要保留 SVM(它们必须一起使用) 【参考方案1】:svmtrain
创建SVMStruct
对象,该对象将支持向量的索引存储在SupportVectorIndices
字段中。因此,只需将此变量的值存储在某个容器中,然后释放模型的其余部分。
根据documentation
SupportVectorIndices — 索引向量,用于指定训练中的行,即训练数据,根据 AutoScale 参数,在数据标准化后被选为支持向量。
【讨论】:
谢谢,如果我这样做了,有没有办法从索引中快速重新创建 SVMStruct?以上是关于MATLAB 的 svmtrain :保存支持向量索引而不是支持向量本身的主要内容,如果未能解决你的问题,请参考以下文章