Python 中的 SVM 回归速度更快
SVM regression faster in Python
我试图在 Python 中加快 GridSearchCV 的进程(用于调整 RBF 函数的参数)。然而,这需要永远。我有一个中等规模的数据集(尺寸 600 x 8),所以我认为维度不是问题。
我在这个 post 中听说过 BaggingRegressors:,但我似乎无法使用 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 的工作原理,所以如果有人有一些见解,请告诉我!
这与 SVR
或 BagginRegressor
作为算法没有任何关系,而只是您使用的参数网格。 epsilon
和 gamma
.
不需要这么小的步长
>>> len(np.arange(0.1, 1.0, 0.01))
90
所以你跨越了一个90*90*11=89100的网格。所以即使你 classifier/regressor 只需要一秒钟的训练时间,你也得等上 24 小时以上!只需采取较小的步骤(例如 0.1),因为结果不是那么敏感。如果有一个区域(例如较小的 epsilon),您可以考虑某种几何级数而不是线性递增的值。
我建议使用 RandomSearchCv。
除此之外,随着数据集的庞大
,支持向量机的时间消耗呈指数级增长
我试图在 Python 中加快 GridSearchCV 的进程(用于调整 RBF 函数的参数)。然而,这需要永远。我有一个中等规模的数据集(尺寸 600 x 8),所以我认为维度不是问题。
我在这个 post 中听说过 BaggingRegressors:
下面的代码可以运行,但是计算时间很长。
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 的工作原理,所以如果有人有一些见解,请告诉我!
这与 SVR
或 BagginRegressor
作为算法没有任何关系,而只是您使用的参数网格。 epsilon
和 gamma
.
>>> len(np.arange(0.1, 1.0, 0.01))
90
所以你跨越了一个90*90*11=89100的网格。所以即使你 classifier/regressor 只需要一秒钟的训练时间,你也得等上 24 小时以上!只需采取较小的步骤(例如 0.1),因为结果不是那么敏感。如果有一个区域(例如较小的 epsilon),您可以考虑某种几何级数而不是线性递增的值。
我建议使用 RandomSearchCv。 除此之外,随着数据集的庞大
,支持向量机的时间消耗呈指数级增长