часть 3: смягчение

TL;DR

Пакет R fairmodels упрощает обнаружение смещения посредством визуализации модели. Он реализует несколько стратегий смягчения, которые могут уменьшить смещение. Это позволяет легко использовать проверки показателей справедливости и сравнения между различными моделями машинного обучения (ML).

Длинная версия

Снижение предвзятости - важная тема в области справедливости машинного обучения (ML). Для пользователей python есть уже реализованные, хорошо объясненные и описанные алгоритмы (см. AIF360). fairmodels предоставляет реализацию нескольких популярных эффективных методов снижения предвзятости, которые сделают вашу модель более справедливой.

У меня предвзятая модель, что теперь?

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

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

Как работают эти алгоритмы?

В этом разделе я кратко опишу, как работают эти методы снижения предвзятости. Код для более подробных примеров и некоторых использованных здесь визуализаций можно найти в этой виньетке.

Предварительная обработка

Съемник разрозненных ударов (Feldman et al., 2015)

Этот алгоритм работает с числовыми, порядковыми функциями. Он изменяет значения столбцов, поэтому распределения для непривилегированной (синий) и привилегированной (красный) подгрупп близки друг к другу. В целом, мы бы хотели, чтобы наш алгоритм оценивал не ценность функции, а скорее процентили (например, наем 20% лучших кандидатов на вакансию из обеих подгрупп). Принцип работы этого алгоритма заключается в том, что он находит такое распределение, которое минимизирует расстояние от землеройного. Проще говоря, он находит среднее распределение и меняет значения в этой функции для каждой подгруппы.

Reeweightnig (Камиран и др., 2012)

Повторный взвешивание - простой, но эффективный инструмент для минимизации систематической ошибки. Алгоритм смотрит на защищенный атрибут и на настоящую метку. Затем он вычисляет вероятность присвоения благоприятной метки (y = 1) при условии, что атрибут protected и y независимы. Конечно, если есть систематическая ошибка, они будут статистически зависимыми. Затем алгоритм делит вычисленную теоретическую вероятность на истинную эмпирическую вероятность этого события. Так создается вес. С помощью этих двух векторов (защищенная переменная и y) мы можем создать вектор весов для каждого наблюдения в данных. Затем мы передаем его модели. Просто как тот. Но в некоторых моделях нет параметра веса, и поэтому этот метод не подходит.

Ресэмплинг (Камиран и др., 2012)

Повторная выборка тесно связана с предыдущим методом, поскольку он неявно использует повторное взвешивание для расчета количества наблюдений, которые должны быть пропущены / дублированы в конкретном случае. Представьте, что есть 2 группы, лишенные (S = 0) и избранные (S = 1). Этот метод дублирует наблюдения из лишенной подгруппы, когда метка является положительной, и пропускает наблюдения с отрицательной меткой. Противоположное действие затем выполняется в отношении избранной группы. Реализовано 2 типа методов передискретизации: равномерный и предпочтительный. Uniform выбирает наблюдения случайным образом (как на картинке), тогда как preferential использует вероятности для выбора / исключения наблюдений, близких к пороговому значению (по умолчанию 0,5).

Постобработка

Постобработка происходит после создания объяснителя. Для создания объяснителя нам потребуется модель и объяснитель DALEX. Модель Gbm будет обучена на наборе данных взрослый, предсказывая, зарабатывает ли конкретный человек более 50 тысяч в год.

library(gbm)
library(DALEX)
library(fairmodels)
data("adult")
adult$salary   <- as.numeric(adult$salary) -1
protected      <- adult$sex
adult <- adult[colnames(adult) != "sex"] # sex not specified

# making model
set.seed(1)
gbm_model <-gbm(salary ~. , data = adult, distribution = "bernoulli")

# making explainer
gbm_explainer <- explain(gbm_model,
                         data = adult[,-1],
                         y = adult$salary,
                         colorize = FALSE)

Отклонение классификации на основе опционов (сводная таблица) (Камиран и др., 2012 г.)

ROC pivot реализован на основе классификации на основе варианта отклонения. Алгоритм переключает метки, если наблюдение происходит из непривилегированной группы и находится слева от отсечки. Затем для привилегированной группы выполняется обратное. Но есть предположение, что наблюдение должно быть близко (с точки зрения вероятностей) к отсечке. Таким образом, пользователь должен ввести некоторое значение theta, чтобы алгоритм знал, насколько близко должно быть наблюдение к отсечке для переключения. Но есть загвоздка. Если бы только название было изменено, объяснителю DALEX было бы трудно правильно рассчитать производительность модели. По этой причине вместо меток в реализации этого алгоритма fairmodels используются вероятности, которые переключаются (поворачиваются). Их просто перемещают на другую сторону, но на равное расстояние до среза.

Отсечка манипуляции

Манипуляции с отсечкой могут быть отличной идеей для минимизации смещения в модели. Мы просто выбираем метрики и подгруппу, для которых изменится отсечка. График показывает, где находится минимум, и для этого значения порога потеря четности будет самым низким. Как создать fairness_object с разной отсечкой для определенной подгруппы? Это легко!

fobject <- fairness_check(gbm_explainer,
                          protected  = protected, 
                          privileged = "Male",
                          label      = "gbm_cutoff",
                          cutoff     = list(Female = 0.35))

Теперь fairness_object (fobject) представляет собой структуру с заданным ограничением, и она будет влиять как на показатели справедливости, так и на производительность.

Компромисс между честностью и точностью

Если мы хотим уменьшить предвзятость, мы должны знать о возможных недостатках этого действия. Допустим, Статическая четность - самый важный для нас показатель. Уменьшение потери четности этого показателя (вероятно) приведет к увеличению ложных срабатываний, что приведет к снижению точности. Для этого примера (который вы можете найти здесь) была обучена модель gbm, а затем были применены различные методы снижения смещения.

Чем больше мы пытаемся уменьшить предвзятость, тем меньше точность. Это что-то естественное для данной метрики, и пользователь должен об этом знать.

Резюме

Определенно стоит попробовать методы устранения смещения, реализованные в Fairmodels. Они гибкие, и большинство из них подходят для любой модели. Более того, они просты в использовании.

Что читать дальше?

Выучить больше

  • Посетите сайт пакета GitHub для получения более подробной информации.
  • Учебник по полным возможностям пакета fairmodels
  • Учебник по методам снижения предвзятости