Page last edited on 2018-05-02

**ChoiceRank** is an algorithm that estimates the *transition probabilities*
along the edges of a network based on the networks’s *structure* and on the
*traffic* at each node of the network. For example, it can be used to estimate
the probability of users clicking on any link of a Wikipedia page, given a
hyperlink graph (such as this one) and the number of views each page
got.

The algorithm and the underlying model are described in the following paper:

ICML 2017
Lucas Maystre, Matthias Grossglauser

**ChoiceRank: Identifying Preferences from Node Traffic in Networks**

There are two implementations of ChoiceRank available at the moment.

**Python**: the choix library provides an implementation that is well-tested an easy to use, and that scales seamlessly to graphs containing up to a few million nodes. Check out this Jupyter notebook to get started.**Rust**: for very large graphs, there is an experimental implementation of ChoiceRank written in Rust that is computationally very efficient (it is based on Frank McSherry’s code for COST). Documentation is a bit lacking at the moment, drop me a line if you need help!