0Pricing
Learn AI with Python · Урок

Выявление предвзятости в моделях машинного обучения

Защищённые атрибуты, несоразмерное воздействие, метрики fairlearn, выравнивание шансов, демографический паритет

«Выявление предвзятости в моделях машинного обучения» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.

Что такое алгоритмическая предвзятость

Модель является предвзятой, если её прогнозы систематически ставят в невыгодное положение группу, определяемую чувствительным признаком (полом, расовой принадлежностью, возрастом). Предвзятость часто возникает из-за несбалансированных обучающих данных и может причинить реальный вред при принятии решений о найме, кредитовании или здравоохранении.

Чувствительные признаки

Чувствительный признак — это характеристика, по группам которой мы измеряем справедливость, например пол или этническая принадлежность. Метрики справедливости сравнивают поведение модели в группах, определяемых этим признаком, даже если сам признак не используется как вход модели.

Демографический паритет

Демографический паритет требует, чтобы доля положительных предсказаний была одинаковой для всех групп. Если кредитная модель одобряет заявки 60% представителей группы A и только 35% представителей группы B, демографический паритет нарушен независимо от действительной кредитоспособности заявителей.

# P(prediction = 1 | group = A) == P(prediction = 1 | group = B)

Равенство шансов

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

# TPR and FPR equal across groups
# P(pred=1 | y=1, A) == P(pred=1 | y=1, B)
# P(pred=1 | y=0, A) == P(pred=1 | y=0, B)

Паритет и равенство шансов

Эти метрики могут противоречить друг другу:

  • Демографический паритет не учитывает истинную метку, поэтому может требовать одинаковых долей даже при действительно различающихся базовых долях
  • Равенство шансов учитывает истинную метку, но допускает разные доли отбора

Ни одна метрика не является универсально правильной: выбор зависит от контекста и законодательства.

Знакомство с fairlearn

fairlearn — это библиотека Python для измерения и уменьшения несправедливости. Её основной инструмент измерения — MetricFrame, который вычисляет любую метрику в разбивке по чувствительным группам.

import pandas as pd
from fairlearn.metrics import MetricFrame
from sklearn.metrics import accuracy_score, selection_rate

Создание MetricFrame

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

mf = MetricFrame(
    metrics={
        "accuracy": accuracy_score,
        "selection_rate": selection_rate,
    },
    y_true=y_test,
    y_pred=y_pred,
    sensitive_features=X_test["gender"],
)

Результаты по группам

Атрибут by_group возвращает таблицу со значением каждой метрики для каждой группы, благодаря чему различия сразу становятся заметны.

print(mf.by_group)
#            accuracy  selection_rate
# gender
# female        0.81            0.34
# male          0.83            0.59

Общие значения и различия

fairlearn также представляет агрегированные результаты: overall — для всего набора данных, а такие вспомогательные методы, как difference() и ratio(), обобщают разрыв между лучшей и худшей группами.

print(mf.overall)
print(mf.difference(method="between_groups"))
# selection_rate    0.25  -> 25 point gap between groups

Визуализация различий

Столбчатая диаграмма по данным by_group превращает числа в наглядное изображение. Большой разрыв между столбцами для одной и той же метрики — явный признак того, что модель по-разному относится к группам.

mf.by_group.plot.bar(
    subplots=True,
    layout=[1, 2],
    figsize=(10, 4),
    title="Metrics by group",
)

От обнаружения к уменьшению несправедливости

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

Быстрая проверка

Проверьте свои знания о справедливости моделей.

Итоги

Вы научились обнаруживать предвзятость:

  • Демографический паритет выравнивает доли положительных предсказаний в разных группах
  • Равенство шансов выравнивает TPR и FPR с учётом метки
  • fairlearn MetricFrame вычисляет словарь метрик для каждой группы sensitive_features
  • Визуализируйте by_group, чтобы обнаружить различия, а затем применяйте уменьшение несправедливости

Часто задаваемые вопросы

Урок «Выявление предвзятости в моделях машинного обучения» бесплатный?

Да — полный текст урока «Выявление предвзятости в моделях машинного обучения» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.

Чему я научусь в уроке «Выявление предвзятости в моделях машинного обучения»?

Защищённые атрибуты, несоразмерное воздействие, метрики fairlearn, выравнивание шансов, демографический паритет Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Learn AI with Python?

Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Выявление предвзятости в моделях машинного обучения»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Learn AI with Python?

Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Выявление предвзятости в моделях машинного обучения
  2. Значения SHAP для объяснимости моделей
  3. LIME: локальные интерпретируемые объяснения
  4. Этика искусственного интеллекта и системы управления
← Назад к Learn AI with Python