SVM培训可以任意长,这取决于数十个参数:
-
C
参数-错误分类罚则越大,过程越慢 - 内核-内核越复杂,进程越慢(rbf是预定义内核中最复杂的)
- 数据大小/维度-同样,同样的规则
通常,基本的SMO算法为O(n^3)
,因此在30 000
个数据点的情况下,它必须按与2 700 000 000 000
成正比的运算数量进行运算,这确实是一个巨大的数字。您有什么选择?
- 将内核更改为线性内核,784个功能很多,rbf可以冗余
- 降低特征的尺寸(PCA?)
- 降低
C
参数 - 在数据的子集上训练模型以找到合适的参数,然后在某个集群/超级计算机上训练整个模型
0
我编写了以下代码,并在小数据上对其进行了测试:
其中
X, y
(X-30000x784矩阵,y-30000x1)是numpy数组。关于小数据的算法效果很好,并给出了正确的结果。但是我大约在10个小时前运行了我的程序……而且程序仍在进行中。
我想知道需要多长时间,或者卡在某种程度上? (笔记本电脑规格4 GB内存,Core i5-480M)