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 运行时间很长的主要内容,如果未能解决你的问题,请参考以下文章

Scikit-Learn SVR 预测总是给出相同的值

用于 SVR 回归的 Scikit Learn 包的问题

python机器学习库scikit-learn:SVR的基本应用

在 Scikit Learn 中使用网格搜索 (GridSearchCV) 和管道的支持向量回归 (SVR) 中的系数

Scikit Learn:如何在回归中设置 SVM 输出范围?

SciKit SGD 回归器 RBF 内核逼近