Fit a Plackett-Luce Model with Linear Predictor for Log-worth
Fit a Plackett-Luce model where the log-worth is predicted by a linear function of covariates. The rankings may be partial (each ranking completely ranks a subset of the items), but ties are not supported.
pladmm(rankings, formula, data, rho = 1, n_iter = 500, rtol = 1e-04)
rankings |
a |
formula |
a formula specifying the linear model for log-worth. |
data |
a data frame containing the variables in the model. |
rho |
the penalty parameter in the penalized likelihood, see details. |
n_iter |
the maximum number of iterations (also for inner loops). |
rtol |
the convergence tolerance (also for inner loops) |
The log-worth is modelled as a linear function of item covariates:
log α_i = β_0 + β_1 x_{i1} + ... + β_p x_{ip}
where β_0 is fixed by the constraint that ∑_i α_i = 1.
The parameters are estimated using an Alternating Directions Method of Multipliers (ADMM) algorithm proposed by Yildiz (2020). ADMM alternates between estimating the worths α_i and the linear coefficients β_k, encapsulating them in a quadratic penalty on the likelihood:
L(β, α, u) = L(D|α) + ρ/2 ||Xβ - log α + u||^2_2 - ρ/2 ||u||^2_2
where u is a dual variable that imposes the equality constraints (so that log α converges to X β).
This is a prototype function and the user interface is planned to change in upcoming versions of PlackettLuce.
Yildiz, I., Dy, J., Erdogmus, D., Kalpathy-Cramer, J., Ostmo, S., Campbell, J. P., Chiang, M. F. and Ioannidis, S. (2020) Fast and Accurate Ranking Regression In Proceedings of the Twenty Third International Conference on Artificial Intelligence and Statistics, 108, 77–-88.
if (require(prefmod)){ data(salad) # data.frame of rankings for salad dressings A B C D # 1 = most tart, 4 = least tart salad[1:3,] # create data frame of corresponding features # (acetic and gluconic acid concentrations in salad dressings) features <- data.frame(salad = LETTERS[1:4], acetic = c(0.5, 0.5, 1, 0), gluconic = c(0, 10, 0, 10)) # fit Plackett-Luce model based on covariates res_PLADMM <- pladmm(salad, ~ acetic + gluconic, data = features, rho = 8) ## coefficients coef(res_PLADMM) ## worth res_PLADMM$pi ## worth as predicted by linear function res_PLADMM$tilde_pi ## equivalent to drop(exp(res_PLADMM$x %*% coef(res_PLADMM))) }
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.