如何加速sklearn中的SVR?

5 投票
1 回答
5482 浏览
提问于 2025-04-17 20:02

我正在用Python的sklearn库实现一种叫做SVR的算法。我的稀疏矩阵大小是146860行和10202列。我把这个大矩阵分成了多个2500行和10202列的小矩阵。对于每个小矩阵,使用SVR进行拟合大约需要10分钟。 有没有什么方法可以加快这个过程?请推荐其他的方法或者不同的Python库来实现同样的功能。 谢谢!

1 个回答

7

你可以把SVR子模型的预测结果取个平均值。

另外,你也可以尝试用线性回归模型来处理通过Nystroem方法计算出来的核扩展的输出。

或者,你可以试试其他非线性回归模型,比如随机树的组合或者梯度提升回归树。

补充说明: 我忘了说,核SVR模型本身不太适合大规模数据,因为它的复杂度超过了二次方,所以没有办法“加速”它。

补充说明 2: 其实,通常将输入变量缩放到[0, 1]或者[-1, 1],或者使用StandardScaler来调整到单位方差,可以大大加快收敛速度。

另外,默认的参数很可能不会得到好的结果:你需要在逐渐增大的样本上进行网格搜索,找到gamma的最佳值,可能还需要调整epsilon,以检查这些最佳参数的稳定性,然后再应用到大模型上。

撰写回答