使用GridSearchCV控制预测> 0

时间:2018-11-15 14:14:52

标签: python scikit-learn xgboost gridsearchcv

我正在使用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 :(得分:0)

如果您知道自己的依存关系(y值)始终为正,则可以使用损失函数来将您的预测也限制在正域内。

XGBoost支持的一个示例是Gamma regression(请参阅reg:gamma),或者您可以像均方对数错误一样design your own loss function,在这种情况下,您必须导出一阶和二阶导数。