1

我正在使用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 中的预测?你会如何解决这个问题?

4

1 回答 1

1

如果您知道您的依赖(y 值)始终为正,则可以使用损失函数将您的预测也限制在正域中。

XGBoost 支持的一个示例是Gamma 回归(参见 reg:gamma),或者您可以设计自己的损失函数,例如均方对数误差,在这种情况下,您必须导出一阶和二阶导数。

于 2018-11-19T14:17:27.900 回答