我在具有20多个变量的80k大小的数据集上将sklearn.svrRBF内核一起使用。我想知道如何选择终止参数tol。我问,因为对于C和伽马的某些组合(在我放弃之前的2天以上),回归似乎没有收敛。有趣的是,对于某些组合,它在少于10分钟的时间内收敛,平均运行时间约为一个小时。

设置此参数是否有某种经验法则?可能与预测的标准偏差或期望值有关系吗?

最佳答案

Mike的答案是正确的:对网格搜索参数进行二次采样可能是在中等数据集大小上训练SVR的最佳策略。 SVR不可扩展,因此不要浪费时间在整个数据集上进行网格搜索。尝试使用1000个随机子样本,然后分别尝试2000和4000。每次找到C和gamma的最佳值,并尝试猜测每当将数据集大小加倍时它们如何演化。

此外,您还可以使用Nystroem kernel approximation和线性回归模型(例如SGDRegressor,LinearRegression,LassoCV或ElasticNetCV)来近似真实的SVR解决方案。在n_samples >> n_features机制中,使用LinearRegression时,RidgeCV可能不会改善。

最后,不要忘了通过在MinMaxScaler中的StandardScaler模型之前放置SVRPipeline来缩放输入数据。

我还将尝试GradientBoostingRegressor模型(尽管与SVR完全无关)。

关于python - SVM:在sklearn中选择支持向量机回归终止准则容差,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17950582/

10-09 22:48