Paun 2018 - Partially Pooled Models Hierarchical D&S ItemDiff LogRndEff
Summary
Hierarchical priors let the data decide how much annotators (or items) are alike. HIERD&S puts Normal priors on confusion-matrix logits; ITEMDIFF models item difficulty only; LOGRNDEFF combines annotator ability and item difficulty in a logistic (Rasch-like) subtractive structure.
Overview
All three use softmax-link logits instead of Dirichlet rows: annotator ability is a logit vector for responses when the true class is .
Main Content
Hierarchical Dawid-Skene (HIERD&S)
Class-level hyperparameters: , . Annotator abilities . Prevalence , , . Partial pooling regularises annotators with few annotations toward the population mean; it asymptotes to unpooled D&S when is large and to the pooled model when .
Item difficulty (ITEMDIFF; extends Carpenter's "Beta-Binomial by Item")
Class-level difficulty means and s.d.’s ; ; item difficulty vector ; . No annotator structure. Each item’s label distribution is its own.
Logistic random effects (LOGRNDEFF; Carpenter 2008)
Annotator ability as in HIERD&S () and item difficulty with . Annotation:
The subtractive “ability minus difficulty” is the Rasch-model structure (see Bürkner 2021 - IRT Model Classes 1PL 2PL and Extensions).
Remark. The name “difficulty” is slightly misleading in ITEMDIFF: without annotator parameters it indicates the most likely annotation classes. The paper therefore uses an independent model-confidence (entropy) measure of difficulty.
Examples
How partial pooling acts on a sparse annotator
Setup. Annotator A labelled 3 items (3 correct); population mean accuracy 0.8 with between-annotator s.d. (logit scale) 0.5. Solution. Unpooled D&S would estimate accuracy near 1 (or Dirichlet-smoothed ~0.8 with a flat prior); HIERD&S shrinks toward 0.8 in proportion to relative to the data precision. Interpretation. Partially pooled models avoid the predictive overfitting seen for unpooled D&S/MACE on small datasets (WSD).
PyMC-style non-centered sketch (untested):
with pm.Model():
zeta = pm.Normal("zeta", 0, 1, shape=(K, K))
omega = pm.HalfNormal("omega", 1, shape=(K, K))
z = pm.Normal("z", 0, 1, shape=(J, K, K))
beta = zeta + omega * z # non-centered
# then softmax(beta[j, c_i]) as the response probabilitiesConnections
- Hierarchical structure: Hierarchical Models; non-centered parameterization is the paper’s recommended implementation (Paun 2018 - Implementation Priors Label Switching and Guidelines).