我在一个 80k 大小的数据集上使用 sklearn.svr 和 RBF 内核,有 20 多个变量。我想知道如何选择终止参数 tol。我问是因为对于 C 和 Gamma 的某些组合(我放弃前 2 天多)回归似乎没有收敛。有趣的是,对于某些平均运行时间约为 1 小时的组合,它在不到 10 分钟后收敛。
设置此参数是否有某种经验法则?也许与预测的标准偏差或预期值有关?
请您参考如下方法:
Mike 的回答是正确的:网格搜索参数的子采样可能是在中等大小的数据集上训练 SVR 的最佳策略。 SVR 不可扩展,所以不要浪费时间在整个数据集上进行网格搜索。尝试 1000 个随机子样本,然后是 2000,然后是 4000。每次都找到 C 和 gamma 的最佳值,并尝试猜测当您将数据集的大小加倍时它们如何演变。
您还可以使用 Nystroem kernel approximation 近似真实的 SVR 解决方案和线性回归模型,例如 SGDRegressor、LinearRegression、LassoCV 或 ElasticNetCV。 RidgeCV 可能不会在 n_samples >> n_features 机制中改进 LinearRegression。
最后,不要忘记通过在 中的 。SVR 模型之前放置 MinMaxScaler 或 StandardScaler 来缩放输入数据管道
我也会尝试 GradientBoostingRegressor 模型(尽管与 SVR 完全无关)。
