контролировать, что прогнозы> 0, используя GridSearchCV - PullRequest
0 голосов
/ 15 ноября 2018

Я использую GridSearchCV для оценки параметров моего регрессора.Я использую функцию оценки mean_squared_log_error (и я хотел бы продолжить ее использование)

from sklearn.model_selection import GridSearchCV
import xgboost as xgb

gs = GridSearchCV(xgb.XGBRegressor(),
                  param_grid={'max_depth': range(5, 10)},
                  scoring='neg_mean_squared_log_error', cv=5, return_train_score=True)

gs.fit(X, y)

y всегда положительно, но происходит то, что некоторые предсказания в 5-кратном поиске сетки случаются сбыть отрицательным (даже если это не должно произойти, потому что моя целевая переменная всегда положительна), и поэтому я получаю сообщение об ошибке

ValueError: Mean Squared Logarithmic Error cannot be used when targets contain negative values.

, потому что оценщик пытается вычислить журнал отрицательного числа (неудачныйпредсказание).

Есть ли способ управления предсказаниями внутри GridSearchCV?Как бы вы решили эту проблему?

1 Ответ

0 голосов
/ 19 ноября 2018

Если вы знаете, что ваша зависимость (значение y) всегда положительная, вы можете использовать функцию потерь, которая ограничивает ваши прогнозы и в положительной области.

Один пример, поддерживаемый в XGBoost: Гамма-регрессия (см. Reg: гамма), или вы можете спроектировать свою собственную функцию потерь , такую ​​как средняя ошибка лога в квадрате.в этом случае необходимо получить производные первого и второго порядка.

...