Code Monkey home page Code Monkey logo

expohedron's Introduction

README

This repository contains code relative to the WSDM'22 paper Introducing the Expohedron for efficient Pareto-optimal fairness-utility amortizations in repeated rankings by Kletti et al.

1. Installation

It is sufficient to clone the repository. The requirements are listed in the file requirements.txt. If conda is used, they can be installed in a virtual environment expohedron as

conda create --name expohedron
conda activate expohedron
conda install --file requirements.txt

2. Get started

A complete working example is available in the file examples/example.py.

In the following we give examples of some common operations.

2.1. Create and expohedron

from expohedron import *

# set parameters
relevance_values = np.array([0.8, 0.8, 0.7, 0.3])
n = len(relevance_values)
dcg = 1 / np.log2(np.arange(2, n+2))

# create expohedron
expohedron = PBMexpohedron(dcg, relevance_values)
print(expohedron)

2.2. Compute the Pareto curve

from pareto import *

# set parameters
relevance_values = np.array([0.8, 0.8, 0.7, 0.3])
n = len(relevance_values)
dcg = 1 / np.log2(np.arange(2, n+2))

pareto_curve = pareto_curve_pbm_individual(dcg, # position based model (PBM)
                                           relevance_values,  # relevance values
                                           fairness="meritocratic", # set "demographic" for demographic fairness
                                           verbose=1)  # set `verbose=0` for muteness

2.3. Carathéodory decomposition

from pareto import *

# set parameters
relevance_values = np.array([0.8, 0.8, 0.7, 0.3])
n = len(relevance_values)
dcg = 1 / np.log2(np.arange(2, n+2))

# compute target exposure
target = fairness_endpoint_individual_meritocratic_intersection(dcg, relevance_values)
# Decompose the target exposure as a convex sum of vertices
convex_coefficients, vertices = caratheodory_decomposition_pbm_gls(dcg, target)

3. License

The license is available in the file LICENSE

4. References

To cite this repository, please use

@inproceedings{kletti_introducing_2022,
	address = {New York, NY, USA},
	series = {{WSDM} '22},
	title = {Introducing the {Expohedron} for {Efficient} {Pareto}-optimal {Fairness}-{Utility} {Amortizations} in {Repeated} {Rankings}},
	isbn = {978-1-4503-9132-0},
	url = {https://doi.org/10.1145/3488560.3498490},
	doi = {10.1145/3488560.3498490},
	urldate = {2022-02-21},
	booktitle = {Proceedings of the {Fifteenth} {ACM} {International} {Conference} on {Web} {Search} and {Data} {Mining}},
	publisher = {Association for Computing Machinery},
	author = {Kletti, Till and Renders, Jean-Michel and Loiseau, Patrick},
	month = feb,
	year = {2022},
	keywords = {ranking, fairness, balanced words, gls, amortization, expohedron, muli-objective optimization, pareto-optimal},
	pages = {498--507},
}

5. Contact us

Should you have any questions, problems or remarks, do not hesitate to raise an issue or to write to us at [email protected].

expohedron's People

Contributors

tillkletti avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.