Определите лучший показатель оценки GridsearchCV c для предсказания еды в XGBoost - PullRequest
0 голосов
/ 06 мая 2020

Я использую GridSearchCV, чтобы найти лучший параметр, который поможет мне настроить XGBoost для алгоритма предсказания еды.

Я изо всех сил пытаюсь определить лучшую метрику оценки c, которая привела бы к наилучшей прибыли (маржа продаж за вычетом затрат на потери), поскольку это в конечном итоге то, что я ищу. Запустив приведенный ниже сценарий и вставив его в данные (я зарезервировал некоторые данные только для тестирования), я заметил, что лучший R2 кажется лучше, чем лучший RMSE для получения более высокой прибыли. Но я изо всех сил пытаюсь найти объяснение, которое поможет мне выбрать лучший метод оценки.

Вот некоторая информация о ситуации: мне стоит 6 долларов США за производство продукта и 9 долларов за продажу, так что моя маржа составляет 3 доллара США. Следовательно, мои потери составляют 6 долларов США, умноженные на (производство минус объемы продаж), тогда как мои доходы - это объемы продаж, умноженные на 3. Пример: я производю 100, продаю 70, трачу 30, мои доходы составляют 70 * 3 - 30 * 6 = 30 Итак, я есть дисбаланс между продажами и потерями.

Главный вопрос: Какой показатель c дает больший штрафной вес для завышенного прогноза?

Мой текущий код:

X = consumption[feature_names]
y = consumption['Meal1']

data_dmatrix = xgb.DMatrix(data=X,label=y)

# Create the parameter grid: gbm_param_grid
gbm_param_grid = {
    'min_child_weight':[1, 2],
    'gamma': [0.05,0.06],
    'reg_alpha':range(1, 2),
    'colsample_bytree': [0.22, 0.23],
    'n_estimators': range(28, 29),
    'max_depth': range(3, 8),
    'reg_alpha':range(1, 2),
    'reg_lambda':range(1, 2),
    'subsample': [0.7,0.8,0.9],
    'learning_rate': [0.1,0.2],


}
fixed_params = {'objective':'reg:squarederror','booster':'gbtree' }

# Instantiate the regressor: gbm
gbm = xgb.XGBRegressor(**fixed_params)

# Perform grid search: grid_mse
grid_mse = GridSearchCV(estimator=gbm, param_grid=gbm_param_grid, scoring="r2", cv=5, verbose=1)


# Fit grid_mse to the data
grid_mse.fit(X,y)

# Print the best parameters and lowest RMSE
print("Best parameters found: ", grid_mse.best_params_)
print("Lowest Score found: ", np.sqrt(np.abs(grid_mse.best_score_)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...