Узнайте, как создавать информационные панели ответственного ИИ с помощью библиотек Python HolitisticAI и Streamlit.
Первоначально опубликовано в Блоге Holistic AI.
ИИ все больше вплетается в ткань нашей повседневной жизни. Поэтому крайне важно устранить потенциальный вред, связанный с предвзятостью в системах ИИ — это означает устранение алгоритмов, которые увековечивают дискриминацию, усиливают неравенство и приводят к несправедливым результатам.
В этой статье вы узнаете, как всего за пять простых шагов создать приложение для панели инструментов для измерения и смягчения предвзятости, используя Python вместе с библиотеками Holistic AI, sklearn и Streamlit.
Как создать информационную панель для измерения и смягчения предвзятости с помощью библиотеки с открытым исходным кодом Holistic AI
Целостная библиотека ИИ — это инструмент с открытым исходным кодом, используемый для оценки и повышения надежности систем ИИ. Текущая версия библиотеки предлагает набор методов, позволяющих легко измерять и устранять предвзятость в различных задачах, способствуя разработке честных, прозрачных и этичных систем искусственного интеллекта.
Мы рассмотрим проблему снижения предвзятости на примере показателей приема для двух разных групп абитуриентов — группы а (белые) и группы б (небелые).
Шаг 1 — Библиотеки Python и главная страница
Начальный шаг в проекте по науке о данных или машинному обучению обычно включает в себя импорт необходимых библиотек Python и настройку главной страницы или пользовательского интерфейса проекта.
То же самое относится и к нашей информационной панели для устранения предвзятости, как показано во фрагменте кода ниже.
# import libraries import streamlit as st import holisticai import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.metrics import RocCurveDisplay from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression from sklearn.neural_network import MLPClassifier from sklearn.ensemble import RandomForestClassifier from holisticai.datasets import load_law_school from holisticai.bias.plots import group_pie_plot, distribution_plot from holisticai.bias.mitigation import Reweighing # set up app title st.markdown("# Classification with Machine Learning") # set up sidebar text st.sidebar.write( """This is a dashboard to measure and mitigate bias with HolisticAI library.""" ) # load dataframe df = load_law_school()['frame'] # create one tab for each step step1, step2, step3, step4 = st.tabs(["Step 1: Data Description", "Step 2: Training Model", "Step 3: Bias Metrics", "Step 4: Bias Mitigation"])
Шаг 2 — Визуализация данных
Для следующего шага создайте простую визуализацию данных с круговой диаграммой, чтобы представить процент белых и небелых людей в наборе данных, и дистрибутивом, чтобы представить распределение среднего балла студентов бакалавриата.
with step1: st.subheader("Descriptive Analysis") # protected attribute (race) p_attr = df['race1'] # binary label vector y = df['bar'] fig1, ax = plt.subplots(1, 2, figsize=(10,3)) # create a pie plot with protected attribute group_pie_plot(p_attr, ax=ax[0]) # create a distplot with target and gender variables distribution_plot(df['ugpagt3'], df['gender'], ax=ax[1]) plt.tight_layout() # show fig1 in app st.pyplot(fig1)
Шаг 3 — Выбор модели и обучение
Далее мы выбираем модель и создаем кривую ROC. Кривая ROC создается путем построения графика истинно положительных показателей (TPR) в сравнении с показателями ложноположительных результатов (FPR) при различных пороговых значениях. Мы также вычисляем площадь под кривой ROC (AUC), которую используем в качестве метрики для количественной оценки общей производительности модели.
with step2: # load machine learning models lr = LogisticRegression() rf = RandomForestClassifier() mlp = MLPClassifier(hidden_layer_sizes = 10, max_iter=50) models = [lr, rf, mlp] # model selector model = st.selectbox("Select a Model", models) # simple preprocessing before training. df_enc = df.copy() df_enc['bar'] = df_enc['bar'].replace({'FALSE':0, 'TRUE':1}) # split features and target, then train test split X = df_enc.drop(columns=['bar', 'ugpagt3']) y = df_enc['bar'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # StandarScaler transformation scaler = StandardScaler() X_train_t = scaler.fit_transform(X_train.drop(columns=['race1', 'gender'])) X_test_t = scaler.transform(X_test.drop(columns=['race1', 'gender'])) # fit model model.fit(X_train_t, y_train) # predictions y_pred = model.predict(X_test_t) # create ROC Curve image roc_disp = RocCurveDisplay.from_estimator(model, X_test_t, y_test) roc_disp.plot() st.pyplot()
Шаг 4 — Метрики предвзятости
На этом этапе мы вычисляем метрики смещения, чтобы оценить, есть ли какие-либо различия в производительности модели для разных подгрупп населения — белых и небелых заявителей в этом примере. Метрики предвзятости используются для измерения справедливости модели и выявления любых потенциальных источников смещения, которые могут присутствовать в данных или модели.
with step3: # set up groups, prediction array and true (aka target/label) array. group_a = X_test["race1"]=='non-white' # non-white vector group_b = X_test["race1"]=='white' # white vector y_true = y_test # true vector # create a table with classification bias metrics bias_metrics = classification_bias_metrics(group_a, group_b, y_pred, y_test, metric_type='both') # show table with bias metrics in app st.table(bias_metrics)
Шаг 5 — Выбор митигатора
Наконец, мы используем стратегию повторного взвешивания для вычисления метрик смещения. Повторное взвешивание — это широко используемый метод машинного обучения для уменьшения систематической ошибки в наборах данных. Стратегия включает в себя присвоение разных весов разным образцам в наборе данных в зависимости от их принадлежности к группам, чтобы сбалансировать представление разных групп.
with step4: # load mitigator (Reweighing) reweighing_mitigator = Reweighing() # use mitigator in data reweighing_mitigator.fit(y_train, group_a, group_b) # access the new sample_weight sw = reweighing_mitigator.estimator_params["sample_weight"] # training the model model.fit(X_train_t, y_train, sample_weight=sw) # make predictions y_pred = model.predict(X_test_t) # create a table with bias metrics for mitigation strategy bias_metrics_mitigated = holisticai.bias.metrics.classification_bias_metrics(group_a, group_b, y_pred, y_test, metric_type='both') # show table with bias metrics in app st.table(bias_metrics_mitigated)
Полная реализация и ссылки
Вы можете получить доступ к полной реализации в этом репозитории GitHub.
И это все, что нужно сделать. Используя библиотеку Holistic AI и платформу Streamlit на Python, вы можете создать удобный интерфейс, позволяющий продемонстрировать результаты ваших усилий по снижению предвзятости в системах машинного обучения.
С быстрым распространением ИИ в обществе практические решения для уменьшения алгоритмической предвзятости как никогда важны.
Настраиваемая информационная панель с интуитивно понятным отображением визуализаций, таблиц и других данных — идеальный способ визуализировать данные и представить их заинтересованным сторонам.
Чтобы узнать больше о методах измерения и смягчения предвзятости, посетите библиотеку комплексного ИИ, ресурс с открытым исходным кодом, предназначенный для повышения надежности и прозрачности систем ИИ.
Открытый исходный код | Целостный ИИ
Нажимая «Принять, вы соглашаетесь на сохранение файлов cookie на вашем устройстве для улучшения навигации по сайту, анализа сайта…www.holisticai.com»
Не стесняйтесь присылать любые вопросы об этой реализации на [email protected]