From 121348c0d795403a9c152af6f55b83dddfcf6b2e Mon Sep 17 00:00:00 2001 From: kalenhaha Date: Wed, 14 May 2014 23:13:27 +0800 Subject: [PATCH] add in grad and hess rescale in lambdarank --- demo/rank/toy.eval | 5 ----- demo/rank/toy.eval.group | 2 -- demo/rank/toy.test | 5 ----- demo/rank/toy.test.group | 2 -- demo/rank/toy.train | 11 ----------- demo/rank/toy.train.group | 2 -- regrank/xgboost_regrank_obj.hpp | 17 ++++++++++++++--- 7 files changed, 14 insertions(+), 30 deletions(-) delete mode 100644 demo/rank/toy.eval delete mode 100644 demo/rank/toy.eval.group delete mode 100644 demo/rank/toy.test delete mode 100644 demo/rank/toy.test.group delete mode 100644 demo/rank/toy.train delete mode 100644 demo/rank/toy.train.group diff --git a/demo/rank/toy.eval b/demo/rank/toy.eval deleted file mode 100644 index 8dad91eb1..000000000 --- a/demo/rank/toy.eval +++ /dev/null @@ -1,5 +0,0 @@ -1 0:2 1:3 2:2 -0 0:2 1:3 2:2 -0 0:2 1:3 2:2 -0 0:2 1:3 2:2 -1 0:2 1:3 2:2 diff --git a/demo/rank/toy.eval.group b/demo/rank/toy.eval.group deleted file mode 100644 index 4792e70f3..000000000 --- a/demo/rank/toy.eval.group +++ /dev/null @@ -1,2 +0,0 @@ -2 -3 diff --git a/demo/rank/toy.test b/demo/rank/toy.test deleted file mode 100644 index 8dad91eb1..000000000 --- a/demo/rank/toy.test +++ /dev/null @@ -1,5 +0,0 @@ -1 0:2 1:3 2:2 -0 0:2 1:3 2:2 -0 0:2 1:3 2:2 -0 0:2 1:3 2:2 -1 0:2 1:3 2:2 diff --git a/demo/rank/toy.test.group b/demo/rank/toy.test.group deleted file mode 100644 index 4792e70f3..000000000 --- a/demo/rank/toy.test.group +++ /dev/null @@ -1,2 +0,0 @@ -2 -3 diff --git a/demo/rank/toy.train b/demo/rank/toy.train deleted file mode 100644 index cd8b6d628..000000000 --- a/demo/rank/toy.train +++ /dev/null @@ -1,11 +0,0 @@ -1 0:1.2 1:3 2:5.6 -0 0:2.0 1:2.3 2:5.1 -0 0:3.9 1:3 2:3.1 -0 0:2 1:3.2 2:3.4 -1 0:2.1 1:4.5 2:4.2 -0 0:1.9 1:2.8 2:3.1 -1 0:3.0 1:2.0 2:1.1 -0 0:1.9 1:1.8 2:2.1 -0 0:1.1 1:2.2 2:1.4 -1 0:2.1 1:4.1 2:4.0 -0 0:1.9 1:2.2 2:1.1 diff --git a/demo/rank/toy.train.group b/demo/rank/toy.train.group deleted file mode 100644 index ec385ae9f..000000000 --- a/demo/rank/toy.train.group +++ /dev/null @@ -1,2 +0,0 @@ -6 -5 \ No newline at end of file diff --git a/regrank/xgboost_regrank_obj.hpp b/regrank/xgboost_regrank_obj.hpp index ed4a33dd9..abe79c330 100644 --- a/regrank/xgboost_regrank_obj.hpp +++ b/regrank/xgboost_regrank_obj.hpp @@ -280,11 +280,13 @@ namespace xgboost{ virtual ~LambdaRankObj(){} virtual void SetParam(const char *name, const char *val){ - if (!strcmp("loss_type", name)) loss_.loss_type = atoi(val); - } + if( !strcmp( "loss_type", name ) ) loss_.loss_type = atoi( val ); + if( !strcmp( "fix_list_weight", name ) ) fix_list_weight_ = (float)atof( val ); + + } private: LossType loss_; - + float fix_list_weight_; protected: class Triple{ @@ -372,6 +374,15 @@ namespace xgboost{ grad[pairs[i].first] += first_order_gradient; hess[pairs[i].second] += second_order_gradient; grad[pairs[i].second] -= first_order_gradient; + + } + + if( fix_list_weight_ != 0.0f ){ + float scale = fix_list_weight_ / (group_index[group+1] - group_index[group]); + for(unsigned j = group_index[group]; j < group_index[group+1]; ++j ){ + grad[j] *= scale; + hess[j] *= scale; + } } }