我使用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内部的预测?你将如何解决这个问题?
发布于 2018-11-19 22:17:28
如果你知道你的依赖(y值)总是正的,你可以使用一个损失函数来约束你的预测也在正域中。
在XGBoost中支持的一个例子是Gamma regression (参见reg:gamma),或者你可以像均方对数误差一样design your own loss function,在这种情况下你必须推导出一阶和二阶导数。
https://stackoverflow.com/questions/53321395
复制相似问题