实现XGboost自定义目标函数

时间:2016-01-17 16:57:47

标签: python r xgboost

我正在尝试使用XGboost实现自定义目标函数(在R中但我也使用python,所以任何关于python的反馈也都很好)。

我创建了一个吐出渐变和粗麻布(它正常工作)的函数,但是当我尝试运行xgb.train时它就无法工作了。然后我决定按照这个特定的顺序打印每一轮的预测,渐变和粗麻布。这是输出(只要我让它运行就会不断重复):

  

[1] 0 0 0 0 0 0 0 0 0 0

     

[1] -0.034106908 -0.017049339 -0.034106908 -0.034106908 -0.034106908   -0.034106908 -0.034106908 -0.004256162 -0.034106908 -0.008520554

     

[1] 0.003836107 0.004272548 0.003836107 0.003836107 0.003836107   0.003836107 0.003836107 0.004408935 0.003836107 0.004381​​658

     

[0]训练得分:0 val-score:0

     

[1] 0 0 0 0 0 0 0 0 0 0

     

[1] -0.034106908 -0.017049339 -0.034106908 -0.034106908 -0.034106908   -0.034106908 -0.034106908 -0.004256162 -0.034106908 -0.008520554

     

[1] 0.003836107 0.004272548 0.003836107 0.003836107 0.003836107   0.003836107 0.003836107 0.004408935 0.003836107 0.004381​​658

     

[1]训练得分:0 val-score:0

我们可以看到,即使渐变和粗麻布似乎没问题,每一轮的预测也不会改变! 我不明白为什么会这样。 如果有人遇到同样的问题或有想法请分享。

我使用的代码如下,但我认为它不是很有用:

reg <- xgb.train(data        = xgb.DMatrix(data.matrix(train[1:10,feature.names]),label=train$Response[1:10]),
             nrounds     = 1000,
             obj = custom_obj,
             feval = evalerror,
             early.stop.round = 20,
             maximize = TRUE,
             watchlist = list(train = xgb.DMatrix(data.matrix(train[1:10,feature.names]),label=train$Response[1:10]),
                               val = xgb.DMatrix(data.matrix(cv[,feature.names]),label=cv$Response)),
             param = list(eta         = 0.5,
                          max_depth   = 10,
                          colsample_bytree=0.7,
                          min_child_weight=50,
                          subsample=0.7,
                          base_score = 4))

0 个答案:

没有答案