【问题标题】:SVM regression faster in PythonPython 中的 SVM 回归速度更快
【发布时间】:2019-01-07 22:36:32
【问题描述】:

我正在尝试在 Python 中加快 GridSearchCV(用于调整 RBF 函数的参数)的过程。然而,这需要永远。我有一个中等大小的数据集(尺寸 600 x 8),所以我认为维度不是问题。

我在这篇文章中听说过 BaggingRegressors:Making SVM run faster in python,但我似乎无法使用 GridSearchCV 使其适用于回归。

以下代码有效,但需要很长时间才能计算。

 parameters = {'epsilon': np.arange(0.1, 1.0, 0.01) ,'C': 2.0 ** 
                  np.arange(-2, 9), 'gamma': np.arange(0.1, 1.0, 0.01)}
 svc = SVR(kernel='rbf')
 clf = GridSearchCV(svc, parameters)
 clf.fit(X_train, y_train)

所以,我试着像这样加快速度:

 parameters = {'epsilon': np.arange(0.1, 1.0, 0.01) ,'C': 2.0 ** 
                  np.arange(-2, 9), 'gamma': np.arange(0.1, 1.0, 0.01)}
 svc = SVR(kernel='rbf')
 clf = GridSearchCV(svc, parameters)
 clf = BaggingRegressor(clf)
 clf.fit(X_train, y_train)

但这根本不会加快进程。

恐怕我并不完全了解 BaggingRegressor 的工作原理,所以如果有人有一些见解,请告诉我!

【问题讨论】:

  • 您在 BagginRegressor 中使用 GridSearchCV,这与您链接的帖子中所做的相反。

标签: python scikit-learn regression svm


【解决方案1】:

我建议使用 RandomSearchCv。 除此之外,SVM 的时间消耗随着庞大的数据集呈指数级增长

【讨论】:

    【解决方案2】:

    这与 SVRBagginRegressor 作为算法无关,而只是您使用的参数网格。 epsilongamma 不需要这么小的步长。

    >>> len(np.arange(0.1, 1.0, 0.01))
    90
    

    所以你跨越了一个 90*90*11=89100 的网格。所以即使你的分类器/回归器只需要一秒钟的时间来训练,你也必须等待超过 24 小时!只需采取较小的步骤(例如 0.1),因为结果并不那么敏感。如果有一个区域(例如较小的 epsilon),您可以考虑某种几何级数而不是线性递增值)。

    【讨论】:

      猜你喜欢
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 2020-04-18
      • 2016-10-22
      • 2015-10-19
      • 2013-10-21
      • 2011-12-22
      • 2022-10-05
      相关资源
      最近更新 更多