训练SVM分类器需要多长时间?

2024-05-04 20:43:34 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

其中X, y(X-30000x784矩阵,y-30000x1)是numpy数组。在小数据上的算法运行良好,并给出了正确的结果。

但我在10小时前运行我的程序。。。而且还在进行中。

我想知道要花多长时间,还是有什么问题? (笔记本电脑规格4GB内存,核心i5-480M)


Tags: 数据代码程序numpy算法矩阵数组kernel
1条回答
网友
1楼 · 发布于 2024-05-04 20:43:34

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

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

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

  • 把一个核换成线性核,784的特征比较多,rbf可以冗余
  • 降低特征维数(PCA?)
  • 降低C参数
  • 在数据子集上训练模型以找到好的参数,然后在某个集群/超级计算机上训练整个模型

相关问题 更多 >