【问题标题】:Speeding up SVM (Model trainig)加速 SVM(模型训练)
【发布时间】:2017-11-29 09:20:32
【问题描述】:

我对 SVM 比较陌生,我正在尝试在 matlab 中使用“fitcsvm”函数来训练一类 SVM 模型。 'rbf' (~ gaussian kernel) 使用内核函数。

我的数据大小约为 150k。不幸的是,模型训练时间很慢(大约 3 分钟)。我在 matlab 中使用以下行来训练 SVM 模型

SVMModel = fitcsvm(X,y,'KernelScale','auto','Standardize',true,'KernelFunction','rbf','Nu',1);

X 是 n*m 矩阵,其中数据点数(~150k),m 是特征数(= 2 个特征)

Y 是数据标签,我在其中训练一个类模型 y= one(n,1);

对加快模型训练步骤有何建议/建议?

谢谢

【问题讨论】:

  • 这个范围很广!请记住,kernelSVM 在复杂性方面介于 O(n^2) 和 O(n^3) 之间(n=n_samples,取决于缓存)。我不确定这个实现是否在内部使用了 libsvm(他们提到了其中一篇 libsvm 论文;但不是我所期望的),所以也许你会通过某种方式使用 libsvm 获得一些东西。
  • 以我个人的经验,LibSVM的matlab集成比内置fitcsvm快很多。
  • 感谢 Sascha 和 Vahe LibSVM 运行良好问候;

标签: matlab machine-learning svm


【解决方案1】:

SVM 存在可扩展性和内存问题。我们对此无能为力,这就是算法的工作方式。有一些尝试并行计算,但这些很少,而且很多时候基于(准确?)近似值。如果你必须坚持这个特定的模型,1 中的工作为此提供了代码。

另一个建议是尝试由创建 LIBSVM 的同一团队开发的线性内核(它更轻且可能对您的数据集足够准确)liblinear(由 sasha 在之前的 cmets 中提到),这可能是用于 MATLAB 的最完整和优化的 SVM。

祝你好运!

【讨论】:

    猜你喜欢
    • 2015-09-18
    • 2015-12-24
    • 2023-03-15
    • 2016-05-31
    • 2023-03-14
    • 2016-10-25
    • 1970-01-01
    • 2015-05-04
    • 2015-07-25
    相关资源
    最近更新 更多