diff --git a/demo/rank/README.md b/demo/rank/README.md index 706f09cd4..1f112b4cb 100644 --- a/demo/rank/README.md +++ b/demo/rank/README.md @@ -1,6 +1,6 @@ Learning to rank ==== -XGBoost supports accomplishing ranking tasks. In ranking scenario, data are often grouped and we need the [group information file](../../doc/tutorials/input_format.rst#group-input-format) to specify ranking tasks. The model used in XGBoost for ranking is the LambdaRank, this function is not yet completed. Currently, we provide pairwise rank. +XGBoost supports accomplishing ranking tasks. In ranking scenario, data are often grouped and we need the [group information file](../../doc/tutorials/input_format.rst#group-input-format) to specify ranking tasks. The model used in XGBoost for ranking is the LambdaRank. See [parameters](../../doc/parameter.rst) for supported metrics. ### Parameters The configuration setting is similar to the regression and binary classification setting, except user need to specify the objectives: @@ -28,7 +28,7 @@ Run the example: ``` ### Python -There are two ways of doing ranking in python. +There are two ways of doing ranking in python. Run the example using `xgboost.train`: ``` diff --git a/demo/rank/rank.py b/demo/rank/rank.py index 2bc260574..d19b2c528 100644 --- a/demo/rank/rank.py +++ b/demo/rank/rank.py @@ -34,8 +34,8 @@ test_dmatrix = DMatrix(x_test) train_dmatrix.set_group(group_train) valid_dmatrix.set_group(group_valid) -params = {'objective': 'rank:pairwise', 'eta': 0.1, 'gamma': 1.0, - 'min_child_weight': 0.1, 'max_depth': 6} +params = {'objective': 'rank:ndcg', 'eta': 0.1, 'gamma': 1.0, + 'min_child_weight': 0.1, 'max_depth': 6} xgb_model = xgb.train(params, train_dmatrix, num_boost_round=4, - evals=[(valid_dmatrix, 'validation')]) + evals=[(valid_dmatrix, 'validation')]) pred = xgb_model.predict(test_dmatrix) diff --git a/demo/rank/rank_sklearn.py b/demo/rank/rank_sklearn.py index 1d8341d17..723b8c7d9 100644 --- a/demo/rank/rank_sklearn.py +++ b/demo/rank/rank_sklearn.py @@ -2,7 +2,6 @@ import xgboost as xgb from sklearn.datasets import load_svmlight_file - # This script demonstrate how to do ranking with XGBRanker x_train, y_train = load_svmlight_file("mq2008.train") x_valid, y_valid = load_svmlight_file("mq2008.vali") @@ -26,10 +25,10 @@ with open("mq2008.test.group", "r") as f: for line in data: group_test.append(int(line.split("\n")[0])) -params = {'objective': 'rank:pairwise', 'learning_rate': 0.1, +params = {'objective': 'rank:ndcg', 'learning_rate': 0.1, 'gamma': 1.0, 'min_child_weight': 0.1, 'max_depth': 6, 'n_estimators': 4} model = xgb.sklearn.XGBRanker(**params) -model.fit(x_train, y_train, group_train, +model.fit(x_train, y_train, group_train, verbose=True, eval_set=[(x_valid, y_valid)], eval_group=[group_valid]) pred = model.predict(x_test)