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.
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
Repository
MO-LightGBM is a gradient boosting framework based on decision tree algorithms, used for Multi-objective learning to rank tasks.
Basic Info
Statistics
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
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.

Requirements
- Python 3.8 or higher
- matplotlib
- seaborn
Installation
Install blas and lapack,
- In mac:
$brew install openblas $brew install lapack - In Debian-based systems like Ubuntu:
$sudo apt install libblas-dev liblapack-dev - In Red Hat systems like CentOS and Fedora:
$sudo yum install lapack-devel blas-devel
- In mac:
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 ../../../../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 ../../../../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
- The dataset should be in csv or tsv format, not in the libsvm format.
- The csv/tsv file should have header that names each column
Process for bi-objective experiments
- Prepare the
<dataset_name>_config.yml - 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
- Website: https://amazon.science
- Twitter: AmazonScience
- Repositories: 80
- Profile: https://github.com/amazon-science
GitHub Events
Total
- Watch event: 14
- Push event: 4
- Public event: 1
Last Year
- Watch event: 14
- Push event: 4
- Public event: 1
Dependencies
- 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
- breathe *
- sphinx *
- sphinx_rtd_theme >=0.5
- dask >=2.0.0
- numpy *
- pandas *
- scikit-learn *
- scipy *
- wheel *
- numpy *
- scikit-learn *
- scipy *
- wheel *
- matplotlib *
- seaborn *