SciKit Learn SVR 运行时间过长

我遇到如下问题:我在一个包含大约46500个观测值的训练集上运行scikit-learn库的SVR,运行时间已经超过六个小时,直到现在。

我使用的是线性核函数。

def build_linear(self):    model = SVR(kernel='linear', C=1)    return model

我已经尝试将”C”值在1e-3到1000之间调整,但没有任何变化。

多项式核函数大约在5分钟内就能运行完,但我需要这些值进行评估,不能跳过这一部分…

有没有人有加速的建议?

非常感谢!


回答:

SVM的扩展性随着样本数量的增加而变差是众所周知的!

与其使用带有线性核函数的SVR,不如使用LinearSVR,或者对于大数据集使用SGDClassifier

LinearSVR在计算能力上受到更多限制(不支持非线性核函数),而这些更受限制的算法通常有更多假设,并利用这些假设来加速计算(或节省内存)。

SVR基于libsvm,而LinearSVR基于liblinear。两者都是经过充分测试的高质量实现。

(值得一提的是:在这种一般情况下,不要浪费时间等待6个小时。可以对数据进行子抽样,尝试从小到大的样本,推断运行时间或问题。编辑:看起来你已经这样做了,很好!)。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注