A python library for preference based learning using pairwise comparisons.
Project description
pypbl
A python library for preference based learning using pairwise comparisons.
Purpose
If we want to recommend a personalised list of items to an individual. We could consider the following:
- Ask the individual to manually rank all items.
- Ask the individual to provide weights based on their preferences of different features (size, cost, weight etc), and calculate the weighted value of each item.
- Find similar people and base recommendations on what these people also like.
- Ask the individual to compare a small number of alternatives, and derive feature weights from those comparisons.
Option 1 quickly becomes an enormous burden on the user as the number of items increases.
Option 2 is difficult for the user to do and replicate. What exactly does it mean if the weight assigned to one feature is double the weight assigned to another?
Option 3 requires lots of data, a way to determine similarity between individuals, and may not be fully personalised.
Option 4 is enabled by preference based learning using pairwise comparisons.
Installing
pip install pypbl
Development
Dependencies and packaging is managed using Poetry.
Install poetry and clone the repository
To create a virtual environment and install dependencies
poetry install
To run tests
poetry run pytest --cov=src --cov-branch --cov-fail-under=90 tests/
To run linting
poetry run flake8 src/ --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
License
This project is licensed under the MIT License - see the LICENSE.md file for details
Acknowledgments
- Early versions of this package is heavily based on the PrefeR library by John Lepird.
- PreferenceElicitation.jl by Mykel Kochenderfer.
- Interactive Bayesian Optimisation by Eric Brochu.
TODO
- Improve suggestion engine as using entropy is expensive to compute.
- Include dynasty sampling algorithm and PyMC3 or perhaps pyMC4
- Include preference elicitation using Gaussian Processes see gp_pref_elicit for non-linear utility functions.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pypbl-0.3.1.tar.gz
.
File metadata
- Download URL: pypbl-0.3.1.tar.gz
- Upload date:
- Size: 8.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.0.0 CPython/3.7.9 Linux/5.4.0-1036-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 45fbd4c34f4d911949ca8a7dffc428806a05b3e742e1e052aa19acb9490d32fd |
|
MD5 | de13b539b08e15f495044bea69176a8f |
|
BLAKE2b-256 | cb212d6d1581abb0e7e2a30636e3c661f61ed62d20b9d6f5b56aaa614c429f7e |
File details
Details for the file pypbl-0.3.1-py3-none-any.whl
.
File metadata
- Download URL: pypbl-0.3.1-py3-none-any.whl
- Upload date:
- Size: 8.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.0.0 CPython/3.7.9 Linux/5.4.0-1036-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0af909ade86a0a89b3ff240f9eff68c2b058be85d631cfe6464b643e7f4946c5 |
|
MD5 | c6e35d2ec71adfe4f008bca0babb0fac |
|
BLAKE2b-256 | 7071c89d1aa589cd67d9eaf8c1c590b6ea5f773f0c68ad6feac29d884bdc7fb3 |