Skip to main content

A python library for preference based learning using pairwise comparisons.

Project description

pypbl

Actions Status Documentation Status Binder

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:

  1. Ask the individual to manually rank all items.
  2. 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.
  3. Find similar people and base recommendations on what these people also like.
  4. 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

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

pypbl-0.3.1.tar.gz (8.8 kB view details)

Uploaded Source

Built Distribution

pypbl-0.3.1-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

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

Hashes for pypbl-0.3.1.tar.gz
Algorithm Hash digest
SHA256 45fbd4c34f4d911949ca8a7dffc428806a05b3e742e1e052aa19acb9490d32fd
MD5 de13b539b08e15f495044bea69176a8f
BLAKE2b-256 cb212d6d1581abb0e7e2a30636e3c661f61ed62d20b9d6f5b56aaa614c429f7e

See more details on using hashes here.

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

Hashes for pypbl-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0af909ade86a0a89b3ff240f9eff68c2b058be85d631cfe6464b643e7f4946c5
MD5 c6e35d2ec71adfe4f008bca0babb0fac
BLAKE2b-256 7071c89d1aa589cd67d9eaf8c1c590b6ea5f773f0c68ad6feac29d884bdc7fb3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page