列车SVM分类器需要多长时间?

时间:2013-08-10 18:43:07

标签: python numpy machine-learning svm

我编写了以下代码并在小数据上进行测试:

classif = OneVsRestClassifier(svm.SVC(kernel='rbf'))
classif.fit(X, y)

X, y(X - 30000x784矩阵,y - 30000x1)是numpy数组。小数据算法运行良好,给我正确的结果。

但我大约10个小时前运行我的程序......它仍然在进行中。

我想知道需要多长时间,或者它会以某种方式陷入困境? (笔记本电脑规格4 GB内存,酷睿i5-480M)

1 个答案:

答案 0 :(得分:27)

SVM训练可以任意长,这取决于几十个参数:

  • C参数 - 错误分类惩罚越大,进程越慢
  • kernel - 内核越复杂,进程越慢(rbf是预定义的最复杂的)
  • 数据大小/维度 - 再次,相同的规则

一般来说,基本的SMO算法是O(n^3),因此在30 000数据点的情况下,它必须运行与2 700 000 000 000成比例的操作数,这实际上是一个巨大的数字。你有什么选择?

  • 将内核更改为线性内核,784功能相当多,rbf可以冗余
  • 减少功能的维度(PCA?)
  • 降低C参数
  • 在您的数据子集上训练模型以找到好的参数,然后在某个群集/超级计算机上训练整个