Skip to content

Motor psicométrico

Teoría de respuesta al ítem aplicada a la anotación. Cada etiqueta recibe una probabilidad posterior y un intervalo de confianza en lugar de un voto mayoritario a secas, y el modelo se ajusta sin etiquetas de oro y sin ningún LLM.

Nuevo en v2.7.0

Potato puede tratar tu estudio de anotación como lo que en realidad es: un instrumento de medición. La capa psicométrica ajusta un modelo de teoría de respuesta al ítem (TRI) en vivo, según van llegando las anotaciones, y estima a la vez la etiqueta verdadera de cada elemento como probabilidad, la capacidad de cada anotador con su error estándar, la dificultad de cada elemento y un diagnóstico de discriminación por elemento que señala posibles fallos del manual de codificación.

No hacen falta etiquetas de oro ni interviene ningún LLM. El modelo (una generalización multiclase de GLAD, Whitehill et al. 2009) lo deduce todo del propio patrón de acuerdo, igual que un test estandarizado aprende qué preguntas son difíciles sin que nadie se lo diga. Los ajustes son deterministas y tardan milisegundos a la escala de un estudio de anotación.

La capacidad de los anotadores estimada en vivo, con intervalos de confianza, de modo que cada etiqueta recibe una posterior en lugar de un voto a secas.

Configuración

yaml
# Adaptive routing is opt-in via the standard assignment strategy key.
# Omit this line to keep your existing strategy and use psychometrics
# as a pure analytics layer.
assignment_strategy: psychometric
 
# Give items a redundancy target so early-stopped items translate into
# concrete saved judgments on the dashboard.
num_annotators_per_item: 4
 
psychometrics:
  enabled: true
  schema: sarcasm            # scheme to model; default: first radio/likert scheme
  refit_interval: 5          # refit after this many new labels (fits are ~ms)
  min_observations: 20       # cold-start gate before adaptive routing engages
  min_annotators_per_item: 2 # never early-stop an item below this many annotators
  confidence_threshold: 0.95 # posterior at which an item counts as resolved
  cost_per_judgment: 0.08    # optional: expresses savings in currency
  discrimination_flag_threshold: -0.2  # codebook-bug flag sensitivity

Los esquemas admitidos son categóricos de opción simple: radio y likert (los puntos de la escala likert se tratan como categorías nominales). Los esquemas de selección múltiple no se modelan.

Etiquetas con barras de error

En lugar de sarcastic (2 of 3 votes), la exportación dice sarcastic, p = 0.94 [0.88 – 0.97]. La probabilidad es la posterior del modelo, que pondera quién votó y no solo cuántos votaron, y el intervalo es una banda de sensibilidad de ±1 error estándar sobre las estimaciones de capacidad.

Aguas abajo puedes entrenar con etiquetas suaves, filtrar los conjuntos de evaluación quedándote con los elementos de alta confianza o tratar los elementos de baja probabilidad como genuinamente ambiguos en vez de como ruido. Consulta la anotación con etiquetas suaves para el enfoque complementario, que consiste en recoger distribuciones directamente de los anotadores.

La capacidad del anotador, presentada con honestidad

La capacidad θ se estima a partir de los patrones de acuerdo. Un valor de 1.0 es la previa de un anotador nuevo, 0 significa que sus etiquetas no aportan información y los valores negativos significan que se equivoca de forma sistemática. Cada estimación viene con un error estándar: un anotador con 12 etiquetas tiene un bigote ancho, y el panel lo dice.

No tomes decisiones de personal a partir de un bigote ancho. Los errores estándar son aproximados (información de Fisher en la moda) y algo optimistas por construcción.

El detector de fallos del manual de codificación

La dificultad de los elementos se estima junto con la capacidad, pero la señal más útil es la discriminación: la correlación entre la capacidad del anotador y el acierto de la respuesta en cada elemento.

Cuando la discriminación es marcadamente negativa, es decir, cuando tus mejores anotadores son justo los que discrepan del consenso de la mayoría, lo que suele fallar en ese elemento es la directriz, por ambigua o equivocada, y no los anotadores. El panel los agrupa bajo "Posibles fallos del manual de codificación". Corrige las instrucciones y vuelve a mirarlo. Las salas multijugador son el lugar al que suelen ir los equipos para resolverlos.

Enrutado adaptativo

Con assignment_strategy: psychometric, cuando un anotador pide trabajo los elementos restantes se ordenan por la ganancia de información esperada exacta a un paso de que ese anotador etiquete ese elemento. Los elementos con más incertidumbre van primero a los anotadores de mayor capacidad, y los elementos cuya posterior ya supera confidence_threshold (con al menos min_annotators_per_item anotadores) dejan de consumir presupuesto. Frente a un diseño de N fijo por elemento, los juicios ahorrados se contabilizan en el panel, y se valoran en dinero si defines cost_per_judgment.

Dos apuntes de funcionamiento:

  • Arranque en frío. Hasta que existan min_observations etiquetas, la asignación vuelve a ser aleatoria, porque el modelo necesita anotadores solapados antes de poder separar la capacidad de la dificultad. El panel muestra un medidor de calentamiento durante esta fase.
  • Lotes. La asignación ocurre cuando se rellena la cola de un usuario. La ordenación es más fresca cuando las colas son cortas; los lotes muy grandes por usuario diluyen la adaptividad.

Análisis de potencia antes de gastar

Todo proyecto de anotación acaba adivinando "¿cuántos anotadores por elemento?". El diseñador de estudios lo responde con una simulación de Monte Carlo con semilla fija:

bash
python -m potato.psychometrics.design --items 500 --accuracy 0.75 \
    --classes 3 --target-ci 0.10 --cost 0.08
text
ann/item   alpha     95% interval   width  majority acc  judgments       cost
       2   0.392 [ 0.330,  0.439]   0.109         0.751       1000      80.00
       3   0.388 [ 0.338,  0.431]   0.093         0.864       1500     120.00  <- recommended

La recomendación es la redundancia más pequeña cuyo intervalo del 95 % sobre el α de Krippendorff sea más estrecho que --target-ci, es decir, el diseño más barato que aún da una estimación de acuerdo defendiblemente precisa. El valor de --accuracy se mide mejor con un piloto pequeño. El mismo análisis está disponible en el panel y como API de administración (GET /psychometrics/api/design).

También puedes ejecutarlo de forma interactiva en el navegador con la calculadora de potencia para anotación.

Endpoints

Todos los endpoints requieren acceso de administrador (RBAC VIEW_ADMIN_DASHBOARD; el modo de depuración y la clave de API de administración compartida también valen).

EndpointPara qué sirve
GET /psychometrics/dashboardPanel en vivo
GET /psychometrics/api/statsAgregados del panel (fuerza un ajuste nuevo)
GET /psychometrics/api/exportExportación enriquecida: posteriores, bandas, capacidades
GET /psychometrics/api/designAnálisis de potencia

Qué relación tiene con MACE

Potato incluye también MACE, que estima la competencia de los anotadores y las etiquetas predichas como analítica a posteriori. Son primos hermanos de la misma literatura, con trabajos distintos.

MACEPsicometría
Modelo del anotadorcompetencia de tipo conocedor frente a adivinadorcapacidad continua con errores estándar
Modelo del elementoningunodificultad + discriminación (avisos de fallo del manual)
Cuándo se ejecutaanalítica por lotes tras N anotacionesen vivo, dentro del bucle de asignación
Dirige la asignaciónnosí, mediante enrutado por ganancia de información y parada temprana
Incertidumbre de las etiquetasentropíaprobabilidad posterior + intervalo de sensibilidad
Planificación previa al estudionoanálisis de potencia por Monte Carlo

Usa MACE para una lectura rápida de competencia sobre cualquier esquema categórico (cubre también multiselect). Usa la psicometría cuando quieras una medición consciente de la dificultad que además actúe sobre el estudio mientras corre.

Solución de problemas

  • El panel se queda "calentando" para siempre. El modelo necesita al menos dos etiquetas distintas y anotadores solapados. Con un único anotador o con etiquetas unánimes el ajuste es degenerado por diseño. Añade anotadores o baja min_observations.
  • assignment_strategy: psychometric está puesto pero el enrutado parece aleatorio. Es el repliegue del arranque en frío. Mira el medidor de calentamiento y min_observations.
  • Todas las capacidades rondan 1.0 y con bigotes enormes. Todavía no hay suficiente solapamiento. Las capacidades se separan a medida que los anotadores acumulan elementos compartidos.
  • 404 en /psychometrics/.... Falta el bloque psychometrics.enabled: true en la configuración.

Lecturas adicionales