【问题标题】:How can I tell if R is still estimating my SVM model or has crashed?如何判断 R 是否仍在估计我的 SVM 模型或已经崩溃?
【发布时间】:2014-05-11 09:41:37
【问题描述】:

我正在使用库 e1071。特别是,我正在使用svm 函数。我的数据集有 270 个字段和 800,000 行。我已经运行这个程序 24 多个小时了,我不知道它是否挂起或仍在正常运行。我发出的命令是:

svmmodel <- svm(V260 ~ ., data=traindata);

我用的是windows,用任务管理器,Rgui.exe的状态是“无响应”。 R已经崩溃了吗?是否有任何其他提示/技巧可以更好地衡量 R 或 SVM 学习过程中发生的情况?

如果有帮助,以下是我使用资源监视器(在 Windows 中)注意到的一些其他事项:

  • CPU 使用率为 13%(稳定)
  • 线程数为 3(稳定)
  • 内存使用量为 10,505.9 MB +/- 1 MB(波动)

在我写这篇文章的时候,我也看到了“类似的问题”并点击了它们。 SVM 训练似乎是二次或三次的。但是,在超过 24 小时之后,如果等待是合理的,我会等待,但如果不是,我将不得不将 SVM 作为一个可行的预测模型来消除。

【问题讨论】:

  • 请尽量使用标准的英语语法、大写和标点符号等来写你的问题。这将使人们更容易尝试帮助您。
  • 希望您能从专家那里得到帮助,但我的通用方法是让该工具适用于较小的数据集,然后尝试越来越大的数据集,注意时间增加了多少(如有必要)获得足够的数据点来绘制图表)。

标签: r svm


【解决方案1】:

正如this question 的回答中提到的,“SVM 训练可以是任意长的”,具体取决于所选的参数。

如果我在我的 ML 课程中没记错的话,运行时间大致与训练示例数的平方成正比,因此对于 800k 示例,您可能不想等待。

另外,作为轶事,我曾经在比你的更小的数据集上运行 e1071R 超过两天。它最终完成了,但培训时间太长,无法满足我的需要。

请记住,大多数机器学习算法(包括 SVM)通常不会实现开箱即用所需的结果。因此,当您考虑需要它以多快的速度运行时,请记住,每次调整调整参数时都必须支付运行时间。 当然,您可以通过采样到较小的训练集来减少此运行时间,前提是您将从较少的数据中学习。

【讨论】:

  • 这是一个非常有用的答案,但它并没有准确解释如何判断库或 R 会话是否已崩溃。
  • @TrevorAlexander,这是一个公平的批评,但我解决了“等待多长时间合理”的问题,所以这确实解决了这个问题,尽管不是全部。
【解决方案2】:

默认情况下,来自 e1071 的函数“svm”使用径向基内核,这使得 svm 归纳计算成本很高。您可能需要考虑使用线性内核(参数 kernel="linear")或使用专门为大型数据集构建的库,如 LiblineaR。但是您的数据集非常大,如果线性内核不能解决问题,那么按照其他人的建议,您可以使用数据的子集来生成模型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 2017-03-29
    • 2017-09-30
    • 1970-01-01
    • 2022-01-21
    相关资源
    最近更新 更多