English translation is not available yet. Showing Russian content.

Как вы измеряете inter-rater reliability для human evaluation?

Краткий тезис

reliability|Inter-rater reliability (IRR) — это статистическая мера согласованности между аннотаторами (экспертами) при выполнении задач разметки, ранжирования или оценки. В контексте human evaluation LLM-систем (например, оценка качества ответов RAG) IRR критически важна: если аннотаторы не согласны друг с другом, результаты оценки ненадёжны. Основные метрики: Cohen's Kappa (для двух аннотаторов), Kappa|Fleiss' Kappa (для трёх и более) и Alpha|Krippendorff's Alpha (для любых типов данных и числа аннотаторов). Низкая IRR (<0.5) сигнализирует о проблемах в инструкциях, сложности задачи или субъективности критериев; решение — улучшение гайдлайнов, калибровочные сессии или использование большинства голосов.


1. Термин: Inter-rater reliability (IRR)

reliability|Inter-rater reliability (согласованность между оценщиками) — это степень, в которой независимые аннотаторы присваивают одинаковые оценки или категории одним и тем же объектам. В human evaluation (оценка человеком) IRR служит индикатором качества разметки: высокая IRR означает, что критерии оценки объективны и понятны, низкая — что задача слишком субъективна или инструкции нечёткие.

Зачем IRR в ML/LLM

  • Оценка качества ответов LLM (faithfulness, relevance, helpfulness)
  • Ранжирование сгенерированных текстов
  • Разметка датасетов для fine-tuning или RLHF
  • Валидация метрик-автоматических оценок (LLM-as-judge)

Ключевая идея: IRR учитывает согласие, которое могло возникнуть случайно (by chance). Простой процент согласия (percent agreement) не корректен, так как не вычитает случайное совпадение.


2. Cohen's Kappa (κ) — для двух аннотаторов

Cohen's Kappa — самая распространённая метрика IRR для двух аннотаторов, работающих с категориальными данными (например, «релевантно / не релевантно»).

Формула

κ = (P_o - P_e) / (1 - P_e)

Где:

  • P_o — наблюдаемая доля согласия (percent agreement)
  • P_e — ожидаемая доля случайного согласия (рассчитывается из маргинальных распределений каждого аннотатора)

Пример расчёта

Пусть два аннотатора оценивают 100 ответов на бинарную шкалу (1 — хорошо, 0 — плохо). Матрица согласия:

Аннотатор B: 1Аннотатор B: 0Итого
Аннотатор A: 140 (a)10 (b)50
Аннотатор A: 015 (c)35 (d)50
Итого5545100
  • P_o = (a + d) / N = (40 + 35) / 100 = 0.75
  • P_e = (50/100)(55/100) + (50/100)(45/100) = 0.50.55 + 0.50.45 = 0.275 + 0.225 = 0.5
  • κ = (0.75 - 0.5) / (1 - 0.5) = 0.25 / 0.5 = 0.5

Интерпретация (Landis & Koch, 1977):

Значение κСила согласия
< 0.00Poor (хуже случайного)
0.00 – 0.20Slight (незначительное)
0.21 – 0.40Fair (умеренное)
0.41 – 0.60Moderate (среднее)
0.61 – 0.80Substantial (существенное)
0.81 – 1.00Almost perfect (почти идеальное)

Для human evaluation в ML обычно целевое значение κ > 0.7 (substantial). Если κ < 0.5 — требуется пересмотр инструкций.

Ограничения

  • Работает только для двух аннотаторов
  • Чувствителен к дисбалансу классов (парадокс Каппы)

3. Fleiss' Kappa — для трёх и более аннотаторов

Fleiss' Kappa — обобщение Cohen's Kappa на случай произвольного числа аннотаторов (≥2). Используется, когда каждый объект оценивается фиксированным числом аннотаторов (обычно 3–5).

Формула

κ = (P̄ - P̄_e) / (1 - P̄_e)

Где:

  • P̄ — средняя доля парных согласий по всем объектам
  • P̄_e — средняя ожидаемая доля случайного согласия (рассчитывается из распределения оценок по всем аннотаторам)

Пример: 3 аннотатора оценивают 10 ответов по шкале {A, B, C}. Для каждого ответа считаем, сколько аннотаторов поставили каждую категорию. Затем вычисляем P̄ и P̄_e.

Интерпретация — те же пороги, что и для Cohen's Kappa.

Преимущество позволяет оценить согласованность всей группы аннотаторов сразу, а не попарно.


4. Krippendorff's Alpha (α) — универсальная метрика

Krippendorff's Alpha — наиболее гибкая метрика IRR, которая:

  • Работает с любым числом аннотаторов (≥2)
  • Поддерживает любые типы данных: номинальные, порядковые, интервальные, отношения, даже с пропущенными значениями
  • Учитывает размерность шкалы (например, разница между «отлично» и «хорошо» меньше, чем между «отлично» и «плохо»)

Формула (упрощённо):

α = 1 - (D_o / D_e)

Где:

  • D_o — наблюдаемое расхождение (сумма взвешенных расстояний между парами оценок)
  • D_e — ожидаемое расхождение при случайном распределении

Типы данных и функции расстояния

  • Номинальные: расстояние = 0 если совпадают, 1 если нет
  • Порядковые: расстояние = (разность рангов)^2
  • Интервальные: (разность значений)^2

Интерпретация α ≥ 0.8 — хорошая надёжность, α ≥ 0.667 — минимально приемлемая для предварительных выводов (по Криппендорфу).

Пример использования оценка тональности текста по 5-балльной шкале (порядковые данные) тремя аннотаторами.


5. Сравнение метрик IRR

МетрикаЧисло аннотаторовТип данныхУчитывает случайностьУстойчивость к дисбалансу
Percent agreementЛюбоеЛюбойНетНизкая
Cohen's Kappa2НоминальныеДаСредняя
Fleiss' Kappa≥2НоминальныеДаСредняя
Krippendorff's Alpha≥2Любой (с весами)ДаВысокая
Gwet's AC12НоминальныеДаВысокая (устойчива к парадоксу Каппы)

Рекомендация для human evaluation в ML используйте Krippendorff's Alpha как универсальный стандарт, а для быстрой проверки — Cohen's Kappa (два аннотатора) или Fleiss' Kappa (больше двух).


6. Причины низкой IRR и методы улучшения

Типичные причины

  • Нечёткие гайдлайны аннотаторы по-разному понимают критерии (например, «релевантность»)
  • Сложность задачи слишком много категорий или тонкие различия
  • Усталость / когнитивная нагрузка длинные сессии разметки
  • Субъективность оценка креативности, юмора, тона
  • Недостаточная калибровка аннотаторы не обсуждали спорные случаи

Методы улучшения

  1. Итеративное уточнение инструкций проведите пилотную разметку, обсудите расхождения, обновите гайдлайны
  2. Калибровочные сессии перед основной разметкой дайте 10–20 примеров, обсудите правильные ответы
  3. Уменьшение числа категорий объедините близкие классы (например, 5-балльную шкалу → 3-балльную)
  4. Majority voting (голосование большинства): используйте 3+ аннотаторов и берите метку, выбранную большинством — это повышает надёжность финальной разметки
  5. Автоматические проверки в процессе разметки показывайте аннотаторам их расхождения с другими и просите пересмотреть

7. Практический пример: оценка faithfulness ответов RAG

Задача два аннотатора оценивают 50 ответов RAG на faithfulness (1 — факты верны, 0 — есть галлюцинации).

Шаги:

  1. Собрать матрицу согласия (как в разделе 2)
  2. Рассчитать Cohen's Kappa (например, через sklearn.metrics.cohen_kappa_score)
  3. Интерпретировать: если κ < 0.5 — пересмотреть определение faithfulness, добавить примеры в инструкцию
  4. Если κ > 0.7 — можно использовать одного аннотатора или усреднять

Код на Python

from sklearn.metrics import cohen_kappa_score

# Оценки двух аннотаторов (0 или 1)
annotator1 = [1, 0, 1, 1, 0, 1, 0, 0, 1, 0]
annotator2 = [1, 0, 1, 0, 0, 1, 1, 0, 1, 0]

kappa = cohen_kappa_score(annotator1, annotator2)
print(f"Cohen's Kappa: {kappa:.3f}")
# Вывод: Cohen's Kappa: 0.737 (пример)

Для Fleiss' Kappa (3+ аннотаторов):

from statsmodels.stats.inter_rater import fleiss_kappa
import numpy as np

# Матрица: строки — объекты, столбцы — категории, значения — число аннотаторов, выбравших категорию
# Пример: 10 объектов, 2 категории (0 и 1), 3 аннотатора
data = np.array([
    [3, 0],  # все три сказали 0
    [2, 1],  # двое сказали 0, один 1
    [1, 2],
    [0, 3],
    [3, 0],
    [2, 1],
    [1, 2],
    [0, 3],
    [2, 1],
    [3, 0]
])
kappa = fleiss_kappa(data, method='fleiss')
print(f"Fleiss' Kappa: {kappa:.3f}")

8. Альтернативные подходы и продвинутые темы

  • Gwet's AC1 — альтернатива Cohen's Kappa, менее чувствительная к дисбалансу классов. Рекомендуется, когда одна категория встречается значительно чаще другой.
  • Weighted Kappa — для порядковых шкал, где разные расхождения имеют разную «стоимость» (например, разница в 1 балл менее критична, чем в 3).
  • Intraclass Correlation Coefficient (ICC) — для непрерывных оценок (например, средняя оценка качества по шкале 1–10). Используется, когда аннотаторы ставят числовые значения, а не категории.
  • Bootstrap-интервалы — для оценки неопределённости IRR (доверительные интервалы).

Когда какую метрику выбрать

  • Категориальные данные, 2 аннотатора → Cohen's Kappa
  • Категориальные, ≥3 аннотаторов → Fleiss' Kappa
  • Любые данные, любое число аннотаторов, с учётом расстояния → Krippendorff's Alpha
  • Непрерывные данные → ICC

Пет-проект для закрепления

Задача Разработать инструмент для оценки IRR на синтетических данных и визуализации согласия аннотаторов.

Инструменты Python (pandas, numpy, sklearn, statsmodels, matplotlib/seaborn).

Шаги:

  1. Сгенерировать синтетический датасет: 100 объектов, 3 аннотатора, 3 категории (A, B, C). Задать истинные метки и добавить шум (вероятность ошибки для каждого аннотатора).
  2. Рассчитать:
    • Percent agreement
    • Cohen's Kappa (попарно для каждой пары аннотаторов)
    • Fleiss' Kappa (для всех трёх)
    • Krippendorff's Alpha (с номинальным расстоянием)
  3. Построить матрицу согласия (heatmap) для каждой пары.
  4. Вывести сводную таблицу метрик.
  5. Эксперимент: изменить уровень шума и посмотреть, как меняются метрики.

Ожидаемый результат Скрипт, который наглядно демонстрирует, как IRR падает при увеличении расхождений, и позволяет выбрать порог для отбраковки аннотаторов.


Связь с другими вопросами

ВопросТема
491Как вы проводите human evaluation для RAG-систем?
493Как вы используете LLM-as-judge для автоматической оценки?
494Какие метрики качества генерации вы знаете?
495Как вы оцениваете качество retrieval'а в RAG?
496Как вы проводите A/B тестирование в RAG-системе?
497Как вы измеряете user satisfaction для RAG?

Навигация