COMRAD404 / HOWTO

Как проверить модель на bias (смещения)

Пошаговая инструкция, как проверить модель на bias: определить тип вреда, сравнить overall и by_group, учесть пересечения групп, задать порог и выбрать mitigation в Fairlearn, AIF360 или What-If Tool.

Понадобится

Зависит от готовности данных; точное время в официальных источниках не указано
  • Размеченная выборка с истинными ответами и предсказаниями модели: y_true и y_pred или score
  • Хотя бы один sensitive feature; при необходимости отдельные control features
  • Python-среда для Fairlearn или AIF360, либо notebook/браузер для What-If Tool
  • Для Fairlearn на PyPI указано Python >=3.10; для AIF360 на PyPI указано Python >=3.8
  • Зафиксированная версия инструмента: у Fairlearn main-документация 0.15.0.dev0 расходится с текущим PyPI-релизом 0.14.0

После выполнения инструкции вы получите воспроизводимую проверку модели на bias: зафиксируете тип вреда, сравните метрики по всей выборке и по группам, учтёте пересечения групп и оформите решение о допустимости расхождений.

  • ⏱️ Время: зависит от готовности данных; точный тайминг в официальных источниках не указан.
  • 🎯 Сложность: средний.
  • 💰 Стоимость: в официальных источниках из этого пакета цена не зафиксирована; учитывайте стоимость вашей среды выполнения и хранения данных.
  • 🛠️ Что потребуется: размеченная выборка с y_true и предсказаниями модели, хотя бы один sensitive feature, при необходимости control features, Python-среда для Fairlearn или AIF360 либо notebook/браузер для What-If Tool.
  • 📌 Актуальная версия: NIST AI RMF Playbook и Measure по состоянию на 2026-08-15; Fairlearn: документация 0.15.0.dev0, при этом на PyPI опубликован 0.14.0 и он требует Python >=3.10; AIF360: 0.6.1, Python >=3.8; What-If Tool — страницы документации из source pack по состоянию на 2026-08-15.

Практический вердикт: для первой проверки удобнее всего взять методологию NIST и расчёт disaggregated metrics через Fairlearn MetricFrame. Если расхождение уже найдено, переходите к mitigation в Fairlearn или AIF360; если источник смещения неясен, используйте интерактивный разбор в What-If Tool.

Редакционное ограничение: универсального порога bias нет. NIST и Fairlearn прямо связывают выбор метрик и допустимых различий с контекстом задачи, типом вреда и governance-правилами вашей организации.

Пошагово: как проверить модель на bias

  1. Шаг 1. Зафиксируйте, какой именно вред вы проверяете.

    NIST рекомендует начинать не с формулы, а с постановки риска: определите типы вреда, затронутые группы и то, какие различия между группами для вас существенны. Fairlearn описывает ту же логику: определить тип вреда, группы риска, затем количественно измерить вред и сравнить значения между группами.

    На практике оформите это в коротком протоколе до расчётов: задача модели, решение, которое она принимает, чувствительные группы, допустимый уровень расхождения и кто утверждает итог. Если у вас есть control features, перечислите их отдельно, чтобы не смешивать контекстную сегментацию и потенциально несправедливый разрыв.

    Ожидаемый результат: у вас есть письменный список групп, метрик и порога, по которому вы будете принимать решение.

  2. Шаг 2. Подготовьте таблицу аудита с истинными ответами, предсказаниями и группами.

    Для воспроизводимой проверки вам нужна одна таблица или датафрейм, где на каждую запись есть минимум: идентификатор, y_true, y_pred или score, один или несколько sensitive features. Если вы хотите анализировать пересечения групп, подготовьте и отдельные поля для них.

    Минимальный вид таблицы:

    Поле Зачем нужно
    id Сопоставить запись и повторить проверку
    y_true Посчитать ошибки модели
    y_pred Сравнить качество между группами
    group Базовое разбиение по чувствительной группе
    control_feature Контекстный разрез, если он нужен вашей задаче

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

  3. Шаг 3. Посчитайте метрики по всей выборке и по группам через MetricFrame.

    Fairlearn называет disaggregated metrics центральным инструментом оценки fairness. Ключевой объект для этого — MetricFrame, который возвращает overall и by_group. NIST отдельно рекомендует смотреть не только общие метрики, но и различия между группами, включая false positive rate и false negative rate.

    Ниже — минимальный пример для бинарной классификации. Он предполагает положительный класс 1. Для multiclass или regression выберите метрики под вашу задачу: в source pack отдельно указано, что доступные fairness-метрики и mitigation-методы для таких задач уже, чем для binary classification.

    import pandas as pd
    from fairlearn.metrics import MetricFrame
    from sklearn.metrics import accuracy_score, precision_score, recall_score, confusion_matrix
    
    
    def false_positive_rate(y_true, y_pred):
        tn, fp, fn, tp = confusion_matrix(y_true, y_pred).ravel()
        return fp / (fp + tn) if (fp + tn) else 0.0
    
    
    def false_negative_rate(y_true, y_pred):
        tn, fp, fn, tp = confusion_matrix(y_true, y_pred).ravel()
        return fn / (fn + tp) if (fn + tp) else 0.0
    
    
    metrics = {
        'accuracy': accuracy_score,
        'precision': precision_score,
        'recall': recall_score,
        'fpr': false_positive_rate,
        'fnr': false_negative_rate,
    }
    
    mf = MetricFrame(
        metrics=metrics,
        y_true=df['y_true'],
        y_pred=df['y_pred'],
        sensitive_features=df['group'],
    )
    
    print(mf.overall)
    print(mf.by_group)

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

  4. Шаг 4. Добавьте пересечения групп и оцените устойчивость различий.

    NIST рекомендует учитывать пересечения групп, а Fairlearn позволяет дополнительно оценивать доверительные интервалы через параметры n_boot и ci_quantiles. Это важно, если по одной группе мало наблюдений и разрыв может быть нестабильным.

    Сначала соберите пересечение в отдельное поле, затем повторите расчёт и включите bootstrap.

    df['group_intersection'] = (
        df['gender'].astype(str) + ' | ' + df['age_band'].astype(str)
    )
    
    mf_intersection = MetricFrame(
        metrics=metrics,
        y_true=df['y_true'],
        y_pred=df['y_pred'],
        sensitive_features=df['group_intersection'],
        n_boot=200,
        ci_quantiles=[0.025, 0.975],
    )
    
    print(mf_intersection.by_group)

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

  5. Шаг 5. Сравните разрывы с заранее заданным порогом и задокументируйте вывод.

    На уровне NIST это обязательная часть процесса: fairness and bias, выявленные на этапе Map, должны быть оценены, а результаты — документированы. NIST также рекомендует заранее определить допустимый порог и действия при его превышении.

    Практически это выглядит так: вы сравниваете overall с by_group, отмечаете группы с худшими значениями, фиксируете величину разрыва и принимаете одно из трёх решений: принять модель как есть, отправить на доработку или запускать mitigation. Не пропускайте документирование даже тогда, когда разрыв кажется небольшим: Playbook — это guidance, а не чек-лист, поэтому именно ваш протокол должен объяснить, почему решение принято.

    Ожидаемый результат: у вас есть короткий отчёт с метриками, порогом, статусом проверки и следующим действием.

  6. Шаг 6. Если смещение найдено, выберите инструмент для mitigation или визуального разбора причины.

    По source pack доступны три практических направления. В Fairlearn есть mitigation-методы ThresholdOptimizer, CorrelationRemover и AdversarialFairnessClassifier; они следуют fit/predict-конвенциям в стиле scikit-learn. В AIF360 есть набор алгоритмов для preprocessing, inprocessing и postprocessing, а также fairness metrics и bias detection methods, включая ClassificationMetric, SampleDistortionMetric и MDSSClassificationMetric для subset scanning bias. В What-If Tool можно искать источник смещения интерактивно; Features Overview автоматически анализирует данные по каждому признаку и помогает находить missing values, unexpected values и data skew.

    Если нужен быстрый интерактивный старт с WIT в notebook, используйте команду:

    pip install witwidget
    Инструмент Когда использовать Ключевое ограничение из источников
    Fairlearn Групповые метрики, overall/by_group, confidence intervals и mitigation в Python Нужны явные sensitive features; выбор fairness-метрики контекстный; на PyPI сейчас 0.14.0, а main-документация описывает 0.15.0.dev0
    AIF360 Широкий набор метрик, bias scan и mitigation PyPI-пакет 0.6.1 помечен как Alpha; зрелость нужных модулей для production нужно проверять отдельно
    What-If Tool Визуальный анализ, поиск проблемных срезов, разбор причин смещения в данных Fairness optimization strategies доступны только для binary classification; tool работает в браузере и не имеет export feature
    NIST AI RMF Playbook Методология, документация и governance Это добровольный guidance, а не обязательный чек-лист; Playbook будет обновляться после пересмотра AI RMF

    Ожидаемый результат: вы понимаете, нужен ли вам чисто отчётный аудит, интерактивный анализ источника смещения или уже полноценное mitigation-вмешательство.

Как проверить, что всё работает

  • Вы можете показать таблицу с overall и by_group минимум для одной чувствительной группы.
  • Для бинарной классификации у вас рассчитаны не только общие метрики качества, но и fpr/fnr или их эквиваленты, если они релевантны вашему вреду.
  • Хотя бы один пересекающийся разрез групп проверен отдельно.
  • Если вы включали bootstrap в Fairlearn, у вас есть доверительные интервалы через n_boot и ci_quantiles.
  • В отчёте зафиксирован порог, фактический разрыв и решение: принять, доработать или запускать mitigation.

Если любой из пунктов отсутствует, проверка bias ещё не закончена: чаще всего в этом месте выясняется, что есть только общий score модели, но нет группового аудита.

Частые ошибки и исправления

  • ❌ Ошибка: выбрать demographic parity или equalized odds только потому, что это самые известные fairness-метрики.
    ✅ Решение: сначала зафиксируйте тип вреда. Fairlearn отдельно предупреждает, что распространённость метрики не означает корректность её применения в любом контексте.
  • ❌ Ошибка: сравнивать только среднюю метрику по всей выборке.
    ✅ Решение: обязательно смотрите overall и by_group. Именно в этом и состоит смысл disaggregated analysis.
  • ❌ Ошибка: игнорировать пересечения групп.
    ✅ Решение: соберите отдельный пересекающийся признак и прогоните метрики ещё раз. NIST прямо рекомендует учитывать intersections.
  • ❌ Ошибка: применять fairness optimization в What-If Tool к multiclass или regression как к полностью поддержанному сценарию.
    ✅ Решение: учитывайте ограничение WIT: fairness optimization strategies доступны только для binary classification, хотя сам tool поддерживает binary classification, multi-class classification и regression.
  • ❌ Ошибка: не зафиксировать версию инструмента и потом получить расхождение между ноутбуком и документацией.
    ✅ Решение: для Fairlearn отдельно зафиксируйте, используете ли вы PyPI-релиз 0.14.0 или ориентируетесь на main-документацию 0.15.0.dev0.

Безопасность и ограничения

  • Для многих fairness-проверок нужны явные sensitive features. Если они относятся к персональным или чувствительным данным, сверяйтесь с вашими внутренними правилами обработки и доступа до запуска аудита.
  • Универсального порога bias нет: NIST и Fairlearn привязывают допустимые различия к домену, типу вреда и внутреннему governance.
  • Набор fairness-метрик и mitigation-методов шире для binary classification; для multiclass и regression доступные подходы уже.
  • Fairlearn на PyPI опубликован как 0.14.0 и помечен Development Status 3 – Alpha; AIF360 на PyPI как 0.6.1 тоже помечен Development Status 3 – Alpha. Для production отдельно проверяйте зрелость нужных модулей.
  • What-If Tool работает в браузере и, согласно FAQ, не имеет export feature. Если вам нужен жёстко воспроизводимый артефакт, рассчитывайте метрики ещё и кодом.
  • NIST AI RMF Playbook полезен как каркас процесса, но сам NIST прямо пишет, что это не чек-лист. Для отслеживания правок используйте официальный Audit Log.

Что делать дальше

  • Если вы тестируете генеративную модель, дополните bias-аудит проверкой на фактические ошибки и выдуманные ответы по инструкции Как проверить модель на галлюцинации.
  • Если модель запускается локально, сначала соберите стабильную среду по инструкции Как запустить модель на CPU (без GPU).
  • Если у вас мультимодальная модель, проверяйте bias отдельно по каждому каналу входа и по их комбинациям: единый aggregate-результат может скрыть проблемный modality-specific разрыв.
  • После первичной диагностики переходите к mitigation только там, где у вас уже есть зафиксированный риск, измеримый разрыв и понятный критерий успеха.

Источники

Вопросы и ответы

Есть ли универсальный порог bias, после которого модель точно нельзя использовать?

Нет. В source pack и NIST, и Fairlearn подчёркивают, что допустимые различия зависят от контекста, домена и governance. Порог нужно задавать заранее под вашу задачу.

Можно ли проверять multiclass и regression?

Частично да, но набор доступных fairness-метрик и mitigation-методов уже, чем для binary classification. What-If Tool поддерживает binary classification, multi-class classification и regression, но fairness optimization strategies в нём ограничены binary classification.

Что выбрать: Fairlearn, AIF360 или What-If Tool?

Для воспроизводимого группового аудита удобен Fairlearn и его MetricFrame. Для более широкого набора metrics, bias scan и mitigation подойдёт AIF360. Для визуального поиска источников смещения в данных и поведении модели удобен What-If Tool. Для процессной рамки используйте NIST AI RMF Playbook.

Что делать, если overall-метрика хорошая, а одна группа заметно хуже?

Считать такую проверку пройденной нельзя. Сравните разрыв с заранее заданным порогом, задокументируйте результат и решите, нужен ли mitigation в Fairlearn или AIF360, либо дополнительный интерактивный разбор причины через What-If Tool.

Почему важно фиксировать версию инструмента?

Потому что у Fairlearn есть рассинхрон между main-документацией 0.15.0.dev0 и текущим PyPI-релизом 0.14.0. Без фиксации версии вы рискуете получить код, который воспроизводится не так, как описано в прочитанной документации.

Шаги

HOW-TO
  1. Зафиксируйте тип вреда, затронутые группы и порог

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

  2. Подготовьте таблицу аудита

    | Соберите единый датасет с y_true, y_pred или score, а также чувствительными и при необходимости контрольными признаками.

  3. Посчитайте overall и by_group

    | Используйте Fairlearn MetricFrame, чтобы получить disaggregated metrics по всей выборке и для каждой группы отдельно.

  4. Проверьте пересечения групп и доверительные интервалы

    | Сформируйте intersectional groups и при необходимости включите bootstrap через n_boot и ci_quantiles для оценки устойчивости разрывов.

  5. Сравните результаты с порогом и оформите отчёт

    | Сопоставьте overall и by_group, зафиксируйте величину разрыва, решение по модели и следующее действие.

  6. При необходимости примените mitigation или визуальный анализ

    | Выберите Fairlearn или AIF360 для mitigation, а What-If Tool — для интерактивного поиска причин смещения в данных и поведении модели.

Источники

SOURCES

Вопросы и ответы

FAQ
Есть ли универсальный порог bias, после которого модель точно нельзя использовать?

Нет. В source pack и NIST, и Fairlearn подчёркивают, что допустимые различия зависят от контекста, домена и governance. Порог нужно задавать заранее под вашу задачу.

Можно ли проверять multiclass и regression?

Частично да, но набор доступных fairness-метрик и mitigation-методов уже, чем для binary classification. What-If Tool поддерживает binary classification, multi-class classification и regression, но fairness optimization strategies в нём ограничены binary classification.

Что выбрать: Fairlearn, AIF360 или What-If Tool?

Для воспроизводимого группового аудита удобен Fairlearn и его MetricFrame. Для более широкого набора metrics, bias scan и mitigation подойдёт AIF360. Для визуального поиска источников смещения в данных и поведении модели удобен What-If Tool. Для процессной рамки используйте NIST AI RMF Playbook.

Что делать, если overall-метрика хорошая, а одна группа заметно хуже?

Сравните разрыв с заранее заданным порогом, задокументируйте результат и решите, нужен ли mitigation в Fairlearn или AIF360, либо дополнительный интерактивный разбор причины через What-If Tool.

Почему важно фиксировать версию инструмента?

Потому что у Fairlearn есть рассинхрон между main-документацией 0.15.0.dev0 и текущим PyPI-релизом 0.14.0. Без фиксации версии вы рискуете получить код, который воспроизводится не так, как описано в прочитанной документации.

Читайте также

LINKS