我正在与 scikit-learn 一起使用 SVM 构建一些预测模型。我有一个包含大约 5000 个示例和大约 700 个特征的数据集。我在训练集上使用 18x17 网格搜索进行 5 折交叉验证,然后使用测试集的最佳参数。运行时间比我预期的要长得多,我注意到以下几点:
1) 一些单独的 SVM 训练迭代似乎只需要一分钟,而另一些则可能需要长达 15 分钟。这是否预期具有不同的数据和参数(C 和 gamma,我正在使用rbf
内核)?
2)我正在尝试在 Windows 上使用 64 位 python 来利用额外的内存,但是我的所有 python 进程似乎在我的任务管理器中都达到了 1 gig,我不知道这是否与运行。
3)我之前使用的是 32 位,并且在大约相同的数据集上运行,我记得(虽然我没有保存结果)它要快得多。我为 64 位 Windows 使用了第三方构建的 scikit-learn,所以我不知道在 32 位 python 上尝试这个是否更好?(来源http://www.lfd.uci.edu/~gohlke/pythonlibs/)
任何关于如何减少运行时间的建议将不胜感激。我想减少我的网格搜索的搜索空间会有所帮助,但由于我甚至不确定最佳参数的范围,我想尽可能地保持它的大小。如果还有更快的 SVM 实现,请告诉我,我可能会尝试这些。
附录:我回去尝试再次运行 32 位版本。由于某种原因,它要快得多。64位版本用了16个小时,大概花了3个小时。为什么会有这样的差异?