thurstone_mosteller_ranker
Thurstone-Mosteller Case V pairwise preference ranker. It aggregates pairwise outcomes into matchup probabilities, applies a fixed continuity correction to avoid infinite probit values, transforms them with the inverse standard normal CDF, and fits Case V latent utilities using a deterministic weighted least-squares linear solve.
The library implements the ranker_protocol defined in the
ranking_protocols library. It provides predicates for learning a
ranker from pairwise preferences, using it to order candidate items, and
exporting it as a list of predicate clauses or to a file.
Datasets are represented as objects implementing the
pairwise_ranking_dataset_protocol protocol from the
ranking_protocols library. See the test_datasets directory for
examples. The current implementation requires a well-formed connected
pairwise dataset so that all learned utilities remain comparable across
the ranked items.
API documentation
Open the ../../apis/library_index.html#thurstone_mosteller_ranker link in a web browser.
Loading
To load this library, load the loader.lgt file:
| ?- logtalk_load(thurstone_mosteller_ranker(loader)).
Testing
To test this library predicates, load the tester.lgt file:
| ?- logtalk_load(thurstone_mosteller_ranker(tester)).
Features
Pairwise Preference Learning: Learns one deterministic latent utility per item from aggregated pairwise outcomes.
Case V Thurstone-Mosteller Fit: Uses continuity-corrected matchup win probabilities transformed by the inverse standard normal CDF and fitted with a deterministic weighted least-squares solve.
Centered Utility Scale: Learned scores are centered so that only utility differences encode preference strength while the absolute location remains arbitrary.
Deterministic Ranking: Orders candidate items by learned utility with deterministic tie-breaking.
Strict Dataset Validation: Rejects duplicate items, undeclared items, self-preferences, non-positive weights, and disconnected comparison graphs.
Training Diagnostics: Learned rankers include metadata describing the fitting method, continuity correction, and validated dataset summary.
Ranker Export: Learned rankers can be exported as self-contained terms.
Scoring semantics
This implementation aggregates pairwise preferences into matchup totals and then estimates latent utilities under the Thurstone-Mosteller Case V model. For each observed unordered pair, it computes a continuity-corrected empirical win probability
(wins + 0.5) / (total + 1.0)
maps that probability through the inverse standard normal CDF, and fits utility differences using weighted least squares with matchup totals as the weights.
The resulting utilities are centered, real-valued scores on an arbitrary additive scale. Only differences between utilities are meaningful when interpreting implied paired-comparison probabilities and ranking order.
Options
The current learn/3 implementation does not define any user options
beyond the default empty list. Non-empty options lists are rejected.
Diagnostics syntax
The diagnostics/2 predicate returns a list of metadata terms with
the form:
[
model(thurstone_mosteller_ranker),
options(Options),
fitting(weighted_least_squares_case_v),
continuity_correction(0.5),
dataset_summary(DatasetSummary)
]
Ranker representation
The learned ranker is represented by a compound term of the form:
thurstone_mosteller_ranker(Items, Scores, Diagnostics)
Where:
Items: List of ranked items.Scores: List ofItem-Scorepairs.Diagnostics: List of metadata terms, including the fitting method, continuity correction, and dataset summary.