Закажи экспресс-аудит своего дела онлайн всего за 199 ₽
и получи рекомендации по улучшению - Жми сюда !

Проверка предвзятости модели с помощью сбалансированных наборов данных и метода мимесиса.

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

Проверка предвзятости модели с помощью сбалансированных наборов данных и метода мимесиса.

# Введение

Будь то хорошо зарекомендовавшие себя классификаторы или передовые масштабные модели, такие как большие языковые модели (LLM), создание решений в области машинного обучения часто сопряжено с риском: алгоритмы могут незаметно перенимать предвзятость, присущую историческому обучающему набору данных, на котором они были обучены. Но в ситуации с высокими ставками или когда данные являются конфиденциальными, как можно проверить, является ли модель предвзятой, не ставя под угрозу информацию из реального мира?

В этой практической статье вы научитесь обучать простую классификационную модель для «одобрения кредита» на предвзятых данных. В основе этого мы будем использовать Mimesis — библиотеку с открытым исходным кодом, которая поможет сгенерировать идеально сбалансированный, контрфактический набор данных. Вы сможете протестировать «поддельных» пользователей с идентичным финансовым положением, но разными демографическими характеристиками, тем самым определив, дискриминирует ли модель определенные группы или нет.

# Пошаговое руководство

Если вы новичок в использовании библиотеки Mimesis или работаете в облачной среде для записных книжек, такой как Colab, начните с её установки:

pip install mimesis

Прежде чем проводить аудит модели, нам нужно её создать! В этом примере мы синтетически сгенерируем набор данных из 1000 клиентов банка всего с двумя признаками: пол и доход. Эти признаки являются категориальными и числовыми соответственно. Создание данных будет намеренно изменено таким образом, чтобы атрибут пола несправедливо влиял на бинарный результат: одобрение кредита. В частности, для разметки набора данных мы рассмотрим сценарий, в котором мужчинам, как правило, одобряют кредиты, а женщинам — только при наличии исключительно высокого дохода.

Ниже показан процесс создания этого явно предвзятого набора данных и обучения на нем классификатора на основе дерева решений:

import pandas as pd import numpy as np from sklearn.tree import DecisionTreeClassifier # 1. Моделирование смещенных исторических данных (1000 экземпляров) np.random.seed(42) n_train = 1000 genders = np.random.choice(['Male', 'Female'], n_train) incomes = np.random.randint(30000, 120000, n_train) approvals = [] for gender, income in zip(genders, incomes): if gender == 'Male': # Исторически мужчины получают одобрение approvals.append(1) else: # Одобряются только женщины с высоким доходом approvals.append(1 if income > 80000 else 0) train_df = pd.DataFrame({'Gender': genders, 'Income': incomes, 'Approved': approvals}) # Преобразование категорий в числа для модели машинного обучения train_df['Gender_Code'] = train_df['Gender'].map({'Male': 1, 'Female': 0}) # 2. Обучение модели классификатора дерева решений model = DecisionTreeClassifier(max_depth=3) model.fit(train_df[['Gender_Code', 'Income']], train_df['Approved'])

Следующий шаг демонстрирует работу Mimesis. Мы будем использовать эту библиотеку для генерации небольшого набора тестовых объектов с помощью класса Generic. Это будет сделано путем определения трех базовых финансовых профилей, содержащих случайные UUID (универсальные уникальные идентификаторы) и умеренный доход в диапазоне от 40 000 до 70 000 долларов. Обратите внимание, что в эти профили пока не будет включена информация о поле:

from mimesis import Generic generic = Generic('en') # Генерация 3 базовых финансовых профилей base_profiles = [] for _ in range(3): profile = { 'Applicant_ID': generic.cryptographic.uuid(), 'Income': generic.random.randint(40000, 70000) # Умеренный доход } base_profiles.append(profile)

Например, три вновь созданных профиля могут выглядеть примерно так:

[{'Applicant_ID': '1f1721e1-19af-4bd1-8488-6abf01404ef9', 'Income': 44815}, {'Applicant_ID': '5c862597-7f55-43f4-9d6e-ac9cc0b9083e', 'Income': 47436}, {'Applicant_ID': '3479d4cf-0d9b-4f06-9c43-1c3b7e787830', 'Income': 58194}]

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

counterfactual_data = [] for profile in base_profiles: # Версия A: Мужской контрфактуальный показатель counterfactual_data.append({ 'Applicant_ID': profile['Applicant_ID'], 'Gender': 'Male', 'Gender_Code': 1, 'Income': profile['Income'] }) # Версия B: Женский контрфактуальный показатель counterfactual_data.append({ 'Applicant_ID': profile['Applicant_ID'], 'Gender': 'Female', 'Gender_Code': 0, 'Income': profile['Income'] }) audit_df = pd.DataFrame(counterfactual_data)

Вот как могут выглядеть три пары клиентов:

1f1721e1-19af-4bd1-8488-6abf01404ef9 Мужской 1 44815 1 1f1721e1-19af-4bd1-8488-6abf01404ef9 Женский 0 44815 2 5c862597-7f55-43f4-9d6e-ac9cc0b9083e Мужской 1 47436 3 5c862597-7f55-43f4-9d6e-ac9cc0b9083e Женский 0 47436 4 3479d4cf-0d9b-4f06-9c43-1c3b7e787830 Мужской 1 58194 5 3479d4cf-0d9b-4f06-9c43-1c3b7e787830 Женский 0 58194

Здесь важно подчеркнуть следующий момент: мы только что использовали Mimesis для мгновенного создания идеально подобранных «клонов» заявителей на получение займа с одинаковым доходом, но разным полом. Это подчеркивает ценность библиотеки в обеспечении полного статистического контроля, позволяющего изолировать защищаемый признак.

Теперь пришло время изучить модель и посмотреть, что она покажет.

# Просим модель спрогнозировать одобрение для наших контрфактических сценариев audit_df['Predicted_Approval'] = model.predict(audit_df[['Gender_Code', 'Income']]) # Форматирование вывода для удобства чтения (1 = Одобрено, 0 = Отказано) audit_df['Predicted_Approval'] = audit_df['Predicted_Approval'].map({1: 'Одобрено', 0: 'Отказано'}) print(«n— Результаты аудита модели —«) print(audit_df[['Applicant_ID', 'Gender', 'Income', 'Predicted_Approval']].sort_values('Applicant_ID'))

Результаты принятия решений, полученные с помощью нашей модели, предельно ясны:

— Результаты проверки модели — Идентификатор заявителя Пол Доход Прогнозируемое одобрение 0 1f1721e1-19af-4bd1-8488-6abf01404ef9 Мужской 44815 Одобрено 1 1f1721e1-19af-4bd1-8488-6abf01404ef9 Женский 44815 Отказано 4 3479d4cf-0d9b-4f06-9c43-1c3b7e787830 Мужской 58194 Одобрено 5 3479d4cf-0d9b-4f06-9c43-1c3b7e787830 Женский 58194 Отказано 2 5c862597-7f55-43f4-9d6e-ac9cc0b9083e Мужской 47436 Одобрено 3 5c862597-7f55-43f4-9d6e-ac9cc0b9083e Женский 47436 Отказано

Обратите внимание, что при одинаковых значениях Applicant_ID и Income, клонам-мужчинам одобряют кредит. В то же время, клонам-женщинам с таким умеренным доходом, как правило, отказывают. Использованные нами функции Mimesis, основанные на профилях, помогли нам сохранить все остальные переменные неизменными, тем самым успешно выделив и выявив дискриминационный характер принятия решений моделью.

# Завершение

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

  • Добавление более сбалансированных профилей в обучающие данные для коррекции исторической асимметрии или смещения.
  • В зависимости от типа модели, могут применяться стратегии перевзвешивания модели.
  • Использование инструментов с открытым исходным кодом для обеспечения справедливости — например, AI Fairness 360 — которые помогают снизить предвзятость в конвейерах машинного обучения.

Иван Паломарес Карраскоса — лидер, писатель, спикер и консультант в области искусственного интеллекта, машинного обучения, глубокого обучения и магистратуры. Он обучает и направляет других в применении ИИ в реальном мире.

Источник: www.kdnuggets.com

✅ Найденные теги: Модели, новости, Помощью, Предвзятости, Проверка, Сбалансированных

Добавить комментарий

Новости других рубрик

Архив рубрики ~Лента новостей~: Процессоры Intel Nova Lake для периферийного сегмента могут получить только E-ядра Архив рубрики ~Лента новостей~: Исследование Google 2025: Более смелые прорывы, большее влияние Архив рубрики ~Лента новостей~: Выяснились детали мега-IPO SpaceX, а также первый прибыльный квартал Anthropic Архив рубрики ~Лента новостей~: Препятствия и планы развития корпоративного ИИ, безопасность и физический ИИ: второй день на TechEx. Архив рубрики ~Лента новостей~: Компания WiseTech начала сокращение штата, но, по словам сотрудников, не включила упоминание «искусственного интеллекта» в электронные письма, рассылаемые китайским работникам. Архив рубрики ~Лента новостей~: Искусственный интеллект не уничтожил единообразие бренда — он сделал его критически важным. Архив рубрики ~Лента новостей~: Обзор 13 AI-психологов 2026: кто реально помогает, а кто просто чат с эмпатичным интерфейсом Архив рубрики ~Лента новостей~: Мы расширяем семейство моделей Gemini 2.5.