SVM регрессия быстрее в Python

1

Я пытаюсь ускорить процесс GridSearchCV (для настройки параметров RBF-функции) в Python. Это, однако, длится вечно. У меня умеренно малый набор данных (размеры 600 x 8), поэтому я не думаю, что размерность является проблемой.

Я слышал о BaggingRegressors в этом сообщении: сделать SVM быстрее в 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, поэтому, если у кого-то есть некоторые идеи, пожалуйста, дайте мне знать!

  • 2
    Вы используете GridSearchCV внутри BagginRegressor, что противоположно тому, что было сделано в посте, на который вы ссылались.
Теги:
scikit-learn
regression
svm

2 ответа

2
Лучший ответ

Это не имеет ничего общего с SVR или BagginRegressor как алгоритмом, а просто сетью параметров, которую вы используете. Нет необходимости в таком небольшом размере шага для epsilon и gamma.

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

Таким образом, вы охватываете сетку 90 * 90 * 11 = 89100. Поэтому, даже если вы классифицируете/регрессор занимает всего одну секунду, чтобы тренироваться, вам нужно подождать более 24 часов! Просто выполняйте более мелкие шаги (например, 0,1), поскольку результаты не так чувствительны. Если есть область (например, меньший эпсилон), вы можете рассматривать некие геометрические ряды вместо линейных возрастающих значений).

0

Я бы предложил использовать RandomSearchCv. Кроме того, временное потребление SVM экспоненциально возрастает с огромными наборами данных

Ещё вопросы

Сообщество Overcoder
Наверх
Меню