我正在使用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中的预测?你会如何解决这个问题?
如果您知道您的依赖(y值)始终为正,则可以使用损失函数来限制您的预测也在正域中。
XGBoost中支持的一个例子是Gamma regression(参见reg:gamma),或者你可以像平均平方误差一样design your own loss function,在这种情况下你必须得到一阶和二阶导数。