我编写了以下代码并在小数据上对其进行了测试:
classif = OneVsRestClassifier(svm.SVC(kernel='rbf'))
classif.fit(X, y)
其中 X, y
(X - 30000x784 矩阵,y - 30000x1)是 numpy 数组。在小数据算法上效果很好,给我正确的结果。
但我在大约 10 小时前运行了我的程序......它仍在进行中。
我想知道需要多长时间,或者它以某种方式卡住了? (笔记本电脑规范 4 GB 内存,Core i5-480M)
最佳答案
SVM 训练可以任意长,这取决于几十个参数:
C
参数 - 错误分类惩罚越大,过程越慢- 内核 - 内核越复杂,进程越慢(rbf 是预定义内核中最复杂的)
- 数据大小/维度 - 同样的规则
一般来说,基本 SMO 算法是 O(n^3)
,因此在 30 000
数据点的情况下,它必须运行与 成比例的操作数>2 700 000 000 000
这是一个非常大的数字。你有什么选择?
- 改一个内核为线性内核,784个特征挺多的,rbf可以冗余
- 降低特征的维度(PCA?)
- 降低
C
参数 - 在您的数据子集上训练模型以找到好的参数,然后在某个集群/ super 计算机上训练整个模型
关于python - 训练SVM分类器需要多少时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18165213/