我正在使用图书馆e1071
。特别是,我使用svm
功能。我的数据集有270个字段和800,000行。我现在已经运行了这个程序24个多小时,我不知道它是挂起还是仍然正常运行。我发出的命令是:
svmmodel <- svm(V260 ~ ., data=traindata);
我正在使用Windows,并且使用任务管理器,Rgui.exe
的状态为&#34;无响应&#34;。 R已经崩溃了吗?是否还有其他提示/技巧可以更好地衡量R内部或SVM学习过程中发生的情况?
如果有帮助,这里有一些我注意到使用资源监视器(在Windows中)的其他内容:
当我写这个帖子时,我也看到了类似的问题&#34;并点击它们。似乎SVM训练是二次或三次的。但是,经过24小时以后,如果等待是合理的,我会等待,但如果没有,我将不得不将SVM作为可行的预测模型。
答案 0 :(得分:4)
如this question的答案所述,“SVM训练可以任意长”,具体取决于所选参数。
如果我从ML课程中正确记得,运行时间大致与数字培训示例的平方成正比,因此对于800k
示例,您可能不想等待。
另外,作为一则轶事,我曾经在e1071
中使用R
在比您更小的数据集上运行了两天以上。它最终完成了,但培训花了太长时间才满足我的需求。
请记住,大多数ML算法(包括SVM)通常不实现所需的结果开箱即用。因此,当您考虑运行速度有多快时,请记住每次调整调整参数时都必须支付运行时间。 当然,您可以通过抽样到较小的训练集来缩短运行时间,同时了解您将从较少的数据中学习。
答案 1 :(得分:1)
默认情况下,来自e1071的函数“svm”使用径向基础内核,这使得svm感应在计算上非常昂贵。您可能需要考虑使用线性内核(参数kernel =“linear”)或使用为大型数据集构建的专用库,如LiblineaR。但是你的数据集非常大,如果线性内核没有按照其他人的建议去做,你就可以使用你的数据子集来生成模型。