SciKit Learn SVR 运行时间很长
Posted
技术标签:
【中文标题】SciKit Learn SVR 运行时间很长【英文标题】:SciKit Learn SVR runs very long 【发布时间】:2018-05-07 16:43:53 【问题描述】:我面临以下问题,我正在一个训练集上运行来自 scikit-learn 库的 SVR,该训练集包含大约 46500 个观测值,并且运行时间超过了六个小时,直到现在。
我正在使用线性内核。
def build_linear(self):
model = SVR(kernel='linear', C=1)
return model
我已经尝试在 1e-3 和 1000 之间更改“C”值,但没有任何变化。
poly 内核运行大约需要 5 分钟,但我需要这些值进行评估,可以跳过这部分...
有人知道如何加快速度吗?
非常感谢!
【问题讨论】:
【参考方案1】:众所周知,SVM 会随着样本数量的增加而严重扩展!
使用 LinearSVR 代替带有线性内核的 SVR,或者对于大数据:SGDClassifier
LinearSVR 在可以计算的内容方面受到更多限制(没有非线性内核),更受限制的算法通常有更多假设并使用这些假设来加速(或节省内存)。
SVR 基于libsvm,而LinearSVR 基于liblinear。两者都是经过充分测试的高质量实现。
(补充一点可能很有价值:不要在等待 6 小时的一般情况下浪费时间。对您的数据进行二次采样并尝试更小、更小……示例并从中推断运行时或问题。编辑: 看来你已经这样做了,很好!)。
【讨论】:
有效!一个较小的数据集,SVR 运行时间 > 30 分钟,运行时间为 1 分钟。 感谢您的提示! @sascha 我正在使用SVR(kernel = "poly", C = 1e3, degree = 2)
、 SVR(kernel = "linear", C = 1e3)
和 SVR(kernel = "rbf", C = 1e3, gamma = 0.1)
用于 6 列和 30 行的 csv 文件,我等待超过 15 分钟。为什么需要这么长时间?以上是关于SciKit Learn SVR 运行时间很长的主要内容,如果未能解决你的问题,请参考以下文章
python机器学习库scikit-learn:SVR的基本应用
在 Scikit Learn 中使用网格搜索 (GridSearchCV) 和管道的支持向量回归 (SVR) 中的系数