This is the accompanying repository to this blog post about taking a multi-objective approach to tuning machine learning model hyperparameters. The accompanying script provides a very simple example of this method applied in Python. However, the concepts and methods could easily be adapted to many other machine-learning problems and other methods of implementation. As for running this script, Docker is the recommended procedure to ensure consistent results with the blog post. However, the script should run in any environment with Python 3 and all the proper dependencies installed.
- Clone this repository using command prompt/terminal $
git clone https://github.com/kravitsjacob/multiobjective-hyperparameter
- Change to the current working directory using command prompt/terminal $
cd <insert_path_to_data>\multiobjective-hyperparameter
- Download and run Docker Desktop. For more information on Docker visit here. To ensure that it is installed correctly go to the command prompt/terminal and enter $ docker --version
- Build the docker image by running $
docker build --tag mohyper .
- Run the image and mount the folder so you can retrieve generated files $
docker run -v <insert_path_to_data>\multiobjective-hyperparameter:/app mohyper
- Clone this repository using command prompt/terminal $
git clone https://github.com/kravitsjacob/multiobjective-hyperparameter
- Change to the current working directory using command prompt/terminal $
cd <insert_path_to_data>\multiobjective-hyperparameter
- Make sure you have Python 3 installed on your computer. This can be downloaded here. To ensure
that it is installed correctly go to the command prompt/terminal and enter $
python --version
- Set up and activate a virtual environment by following instructions here.
- Install dependencies using requirements.txt found here
- Run script using $
python main.py
To cite the methods employed in this blog post, please cite:
@article{kravits_screening_2021,
title = {Screening {Tool} for {Dam} {Hazard} {Potential} {Classification} {Using} {Machine} {Learning} and {Multiobjective} {Parameter} {Tuning}},
volume = {147},
url = {https://ascelibrary.org/doi/abs/10.1061/%28ASCE%29WR.1943-5452.0001414},
doi = {10.1061/(ASCE)WR.1943-5452.0001414},
number = {10},
journal = {Journal of Water Resources Planning and Management},
author = {Kravits, Jacob and Kasprzyk, Joseph and Baker, Kyri and Andreadis, Konstantinos},
year = {2021},
note = {\_eprint: https://ascelibrary.org/doi/pdf/10.1061/\%28ASCE\%29WR.1943-5452.0001414},
pages = {04021064},
}
To cite this repository or the corresponding blog post, please cite:
@misc{kravits_multi-objective_2021,
title = {Multi-{Objective} {Machine} {Learning} {Hyperparameter} {Tuning} ({Without} {Explicit} {Objective} {Weighting})},
url = {https://github.com/kravitsjacob/multiobjective-hyperparameter},
publisher = {GitHub},
author = {Kravits, Jacob},
year = {2021},
doi = {https://doi.org/10.5281/zenodo.5149306},
}