эффект измерения производительности gridSearch - PullRequest
0 голосов
/ 14 марта 2019

У меня есть назначение, и он просит меня:

Улучшить производительность моделей из предыдущего шага с настройкой гиперпараметра и выбрать окончательную оптимальную модель, используя поиск в сетке на основе метрики (или метрик), что вы выбираете.Выбор оптимальной модели для данной задачи (сравнение нескольких регрессоров в конкретной области) требует выбора показателей производительности, например, R2 (коэффициент детерминации) и / или RMSE (среднеквадратическая ошибка) для сравнения производительности модели.

Я использовал этот код для настройки гиперпараметра:

model_example = GradientBoostingRegressor()
parameters = {'learning_rate': [0.1, 1], 
              'max_depth': [5,10]}

model_best = GridSearchCV(model_example,
                          param_grid=parameters,
                          cv=2,scoring='r2').fit(X_train_new,y_train_new)
model_best.best_estimator_

Я нашел скорость обучения = 0,1 и max_dept = 5 Я выбрал scoring='r3' в качестве показателя производительности, но он не имеетвлиял ли я на точность модели, когда использовал этот код для предоставления своей лучшей модели:

my_best_model = GradientBoostingRegressor(learning_rate=0.1,
                                          max_depth=5).fit(X_train_new,y_train_new)
my_best_model.score(X_train_new,y_train_new)

Знаете ли вы, что не так с моей работой?

1 Ответ

1 голос
/ 14 марта 2019

Попробуйте установить random_state в качестве параметра вашего GradientBoostingRegressor(). Например, GradientBoostingRegressor(random_state=1).

Модель будет давать те же результаты на тех же данных. Без этого параметра есть элемент случайности, который затрудняет сравнение различных подгонок модели.

Установка случайного состояния в split-test-split также поможет в этом.

...