gpt4 book ai didi

python - SVM 实现,scikit 学习减少运行时间,最快的 svm

转载 作者:太空狗 更新时间:2023-10-30 00:30:24 26 4
gpt4 key购买 nike

我正在使用 scikit-learn 使用 SVM 构建一些预测模型。我有一个包含大约 5000 个示例和大约 700 个特征的数据集。我在我的训练集上使用 18x17 网格搜索进行 5 折交叉验证,然后使用我的测试集的最佳参数。运行时间比我预期的要长很多,我注意到以下几点:

1) 一些单独的 SVM 训练迭代似乎只需要一分钟,而其他的可能需要长达 15 分钟。这是预期的不同数据和参数(C 和 gamma,我使用的是 rbf 内核)吗?

2) 我正在尝试在 Windows 上使用 64 位 python 来利用额外的内存,但是我的所有 python 进程在我的任务管理器中似乎都以 1 gig 的最高速度运行,我不知道这是否有任何影响处理运行时。

3) 我之前使用的是 32 位,并且在大约相同的数据集上运行,我记得(虽然我没有保存结果)它要快得多。我为 64 位窗口使用了 scikit-learn 的第三方构建,所以我不知道在 32 位 python 上尝试这个是否更好? (来源 http://www.lfd.uci.edu/~gohlke/pythonlibs/)

任何关于如何减少运行时间的建议都将不胜感激。我想减少网格搜索的搜索空间会有所帮助,但由于我什至不确定最佳参数的范围,我希望尽可能大。如果还有更快的 SVM 实现,请告诉我,我可能会尝试一下。

附录:我回去尝试再次运行 32 位版本。由于某种原因,它要快得多。花了大约 3 个小时才到达 64 位版本在 16 小时内到达的位置。为什么会有这样的差异?

最佳答案

1) 这是意料之中的:较小的 gamma 和较小的正则化将选择更多的支持向量,因此模型将更复杂且拟合时间更长。

2) 有一个 cache_size 参数将传递给底层 libsvm 库。但是,根据您的数据,libsvm 可能会也可能不会使用所有可用缓存。

3) 不知道。如果您在两个平台上运行更多定时实验,请在项目邮件列表中报告您的发现。这可能值得进一步调查。

首先检查您是否对特征进行了归一化(例如,如果您的数据是密集的 numpy 数组,则通过方差移除均值和尺度特征)。对于稀疏数据,只需缩放特征(或者对文本数据使用 TF-IDF 转换)。查看preprocessing section的文档。

然后您应该从一个粗略的网格(具有较大的对数步长)开始,比如说一个 3x3 网格,然后通过在该区域重新运行 3x3 网格来关注有趣的区域。一般来说,C x gamma SVM 参数网格是 quite smooth .

关于python - SVM 实现,scikit 学习减少运行时间,最快的 svm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9163407/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com