我正在使用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中的预测?您将如何解决这个问题?
答案 0 :(得分:0)
如果您知道自己的依存关系(y值)始终为正,则可以使用损失函数来将您的预测也限制在正域内。
XGBoost支持的一个示例是Gamma regression(请参阅reg:gamma),或者您可以像均方对数错误一样design your own loss function,在这种情况下,您必须导出一阶和二阶导数。