我在具有20多个变量的80k大小的数据集上将sklearn.svr
与RBF
内核一起使用。我想知道如何选择终止参数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
模型之前放置SVR
或Pipeline
来缩放输入数据。
我还将尝试GradientBoostingRegressor
模型(尽管与SVR完全无关)。
关于python - SVM:在sklearn中选择支持向量机回归终止准则容差,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17950582/