https://github.com/amazon-science/mo-lightgbm

MO-LightGBM is a gradient boosting framework based on decision tree algorithms, used for Multi-objective learning to rank tasks.

https://github.com/amazon-science/mo-lightgbm

Science Score: 36.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
    Found 2 DOI reference(s) in README
  • Academic publication links
    Links to: acm.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (8.9%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

MO-LightGBM is a gradient boosting framework based on decision tree algorithms, used for Multi-objective learning to rank tasks.

Basic Info
  • Host: GitHub
  • Owner: amazon-science
  • License: apache-2.0
  • Language: C++
  • Default Branch: main
  • Homepage:
  • Size: 61.8 MB
Statistics
  • Stars: 2
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created over 1 year ago · Last pushed about 1 year ago
Metadata Files
Readme Contributing License Code of conduct

README.md

Multi-objective Learning to Rank through Multi-objective Optimization with LightGBM

Introduction

MO-LightGBM is a gradient boosting framework based on decision tree algorithms, used for multi-label learning to rank tasks. It is based on LightGBM.

MO-LightGBM Architecture

Requirements

  • Python 3.8 or higher
  • matplotlib
  • seaborn

Installation

  1. Install blas and lapack,

    1. In mac: $brew install openblas $brew install lapack
    2. In Debian-based systems like Ubuntu: $sudo apt install libblas-dev liblapack-dev
    3. In Red Hat systems like CentOS and Fedora: $sudo yum install lapack-devel blas-devel
  2. From the scs root, build the package, install cmake if needed

    cd LightGBM/external_libs/scs/ rm -r build mkdir build cd build cmake .. make -j$(nproc) cd ../../../../

  3. From the ecos root, build the package

    cd LightGBM/external_libs/ecos.2.0.8/ rm -r build mkdir build cd build cmake .. make -j$(nproc) cd ../../../../

  4. Now build LightGBM

cd LightGBM rm -r build mkdir build cd build cmake .. make -j$(nproc) cd ../../ It is fully tested with Red Hat systems.

Usage

Assumptions about Dataset

  1. The dataset should be in csv or tsv format, not in the libsvm format.
  2. The csv/tsv file should have header that names each column

Process for bi-objective experiments

  1. Prepare the <dataset_name>_config.yml
  2. Generate configure files for baseline experiment

python baselines.py <dataset_name>_config.yml 3. Go to the baseline_results folder and run the experiments

cd results_${dataset}/lambdarank/baseline_results sh run_experiment.sh 4. Generate configure files for biobjective experiments for preference based methods

python biobjectives.py <dataset_name>_config.yml 5. Go to the biobjective_results folder, and, either run all the experiments or run for individual combinator

cd results_${dataset}/lambdarank/biobjective_results sh run_experiment.sh # will run for the all combinators sh epo_search_run_experiment.sh # will run only for epo_search 6. Generate configure files for biobjective experiments for constraints based methods

python biobjectives_ec.py <dataset_name>_config.yml 7. Go to the biobjective_results folder, and, either run all the experiments or run for individual combinator

cd results_${dataset}/lambdarank/biobjective_results sh ec_run_experiment.sh # will run for the all combinators 8. [optional] Run plotting script 1. Plot bound and ray in one figure python plotbiobjectives.py <datasetname>_config.yml ```

Example for bi-objective experiment

```

dataset=istella

root=/home/user/MO-LightGBM/

folder=${root}/example/

cd ${folder}

python baselines.py ${dataset}_config.yml

cd results${dataset}/lambdarank/baselineresults

sh run_experiment.sh

cd ${folder}

python biobjectives.py ${dataset}_config.yml

cd results${dataset}/lambdarank/biobjectiveresults

sh run_experiment.sh

cd ${folder}

python biobjectivesec.py ${dataset}config.yml

cd results${dataset}/lambdarank/biobjectiveresults

sh ecrunexperiment.sh

cd ${folder}

python plotbiobjectives.py ${dataset}config.yml

```

//: # ()

//: # ()

//: # ()

//: # ()

//: # () //: # ()

//: # ()

//: # ()

//: # ()

//: # () //: # ()

//: # ()

//: # ()

//: # ()

//: # ()

Citation

If you use this work, or otherwise found our work valuable, please consider citing the papers:

MO-LightGBM: A Library for Multi-objective Learning to Rank with LightGBM

Multi-Label Learning to Rank through Multi-Objective Optimization

``` @inproceedings{chaosheng2025mo-lightgbm, title={MO-LightGBM: A Library for Multi-objective Learning to Rank with LightGBM}, author={Dong, Chaosheng and Momma, Michinari}, booktitle={Proceedings of the 48th International ACM SIGIR Conference on Research and Development in Information Retrieval}, year={2025} }

@inproceedings{mahapatra2023multi, title={Multi-label learning to rank through multi-objective optimization}, author={Mahapatra, Debabrata and Dong, Chaosheng and Chen, Yetian and Momma, Michinari}, booktitle={Proceedings of the 29th ACM SIGKDD Conference on Knowledge Discovery and Data Mining}, year={2023} }

```

Security

See CONTRIBUTING for more information.

License

This project is licensed under the Apache-2.0 License.

Owner

  • Name: Amazon Science
  • Login: amazon-science
  • Kind: organization

GitHub Events

Total
  • Watch event: 14
  • Push event: 4
  • Public event: 1
Last Year
  • Watch event: 14
  • Push event: 4
  • Public event: 1

Dependencies

LightGBM/R-package/DESCRIPTION cran
  • R >= 3.5 depends
  • R6 >= 2.0 depends
  • Matrix >= 1.1 imports
  • data.table >= 1.9.6 imports
  • graphics * imports
  • jsonlite >= 1.0 imports
  • methods * imports
  • utils * imports
  • processx * suggests
  • testthat * suggests
LightGBM/external_libs/fmt/support/build.gradle maven
LightGBM/docs/requirements.txt pypi
  • breathe *
LightGBM/docs/requirements_base.txt pypi
  • sphinx *
  • sphinx_rtd_theme >=0.5
LightGBM/python-package/lightgbm.egg-info/requires.txt pypi
  • dask >=2.0.0
  • numpy *
  • pandas *
  • scikit-learn *
  • scipy *
  • wheel *
LightGBM/python-package/setup.py pypi
  • numpy *
  • scikit-learn *
  • scipy *
  • wheel *
example/requirements.txt pypi
  • matplotlib *
  • seaborn *