Создание интерактивной панели мониторинга в несколько строк кода с помощью ExplainerDashboard

Интересно расшифровать работу машинного обучения через веб-панель управления. Представьте, что вы получаете доступ к интерактивным графикам, отображающим информацию о производительности модели, важности функций, а также анализу «что, если». Что удивительно, так это то, что для создания такой информативной информационной панели не требуется никакого опыта веб-разработки, но простых нескольких строк кода на Python достаточно для создания потрясающе интерактивной информационной панели машинного обучения. Это возможно с помощью библиотеки под названием Explainer Dashboard.

ExplainerDashboard - это пакет Python, который генерирует интерактивные информационные панели, которые позволяют пользователям понимать, а также объяснять, как работает модель и как она определяет результат. Без такого инструмента модель машинного обучения представляет собой «модель черного ящика». Следовательно, становится трудно объяснить причину решения, принятого моделью, и какие факторы влияют на ее принятие. Используя этот пакет в Python, мы можем легко развернуть панель мониторинга как веб-приложение в записных книжках Jupyter или Colab. Это веб-приложение предоставляет несколько интерактивных графиков для объяснения работы модели машинного обучения, к которой оно было применено. Эти модели могут быть основаны на Scikit-learn, XGBoost, CatBoost, LightGBM и некоторых других. Панель инструментов предоставляет информацию о производительности модели с помощью различных интерактивных
графиков, таких как графики значений SHAP для понимания зависимости функций,
графиков взаимодействия SHAP для взаимодействий функций, графиков частичной зависимости (PDP) для влияния выбранных функций. как визуализация пути принятия решения с помощью деревьев решений и т. д. Также можно оценить влияние изменения значения функции на производительность модели с помощью анализа «что, если». Кроме того, опытные пользователи также могут настроить эти информационные панели с помощью некоторого дополнительного кода. В этом руководстве мы просто исследуем функциональность пакета, и я расскажу вам пошаговый подход к созданию вашей собственной панели мониторинга модели машинного обучения на Python с помощью нескольких строк кода. Ближе к концу руководства мы увидим, какие идеи мы можем почерпнуть с помощью этой панели управления машинным обучением.

Библиотека ExplainerDashboard

Этот пакет Python создает объяснимую панель управления на основе веб-приложения или встроенной записной книжки для модели машинного обучения. Компоненты панели мониторинга по умолчанию не требуют пояснений, и никаких дополнительных функций определения не требуется. Эти графики или интерактивные компоненты панели инструментов основаны на другой библиотеке под названием Dash, которая хорошо известна для веб-приложений, а для графиков используется библиотека, известная как Plotly. Наконец, вся панель управления представляет собой веб-приложение, которое запускается на вашем локальном компьютере с использованием флэш-сервера. Вы можете найти всю официальную документацию для ExplainerDashboard здесь.

Давайте начнем обучение с установки библиотеки ExplainerDashboard.

pip install explainerdashboard

Вы можете использовать эту команду напрямую в Colab или записной книжке Kaggle. Однако при использовании записной книжки Jupyter, работающей на локальном компьютере, использование виртуальной среды может быть лучшим выбором, чтобы избежать конфликтов из-за зависимостей пакетов.

Подход:

  • Импортируйте библиотеки и образец набора данных
  • Создайте DataFrame из набора данных (для этого демонстрационного руководства предварительная обработка данных не требуется)
  • Разделите данные и обучите модель
  • Разверните приборную панель на локальном порту

Пример регрессии на панели инструментов машинного обучения

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

Импорт библиотек

#Importing Libraries & Packages
import pandas as pd
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from explainerdashboard import RegressionExplainer, ExplainerDashboard

Нам нужна библиотека Pandas для DataFrame, а библиотеки ExplainerDashboard и Dash Bootstrap предназначены для создания информационной панели. Библиотека sklearn будет использоваться для получения набора данных игрушки, разделения его и импорта RandomForestRegressor для обучения модели для этого примера регрессии.

Импорт набора данных

#Import the Diabetes Dataset
from sklearn.datasets import load_diabetes
data= load_diabetes()
#print the dataset
data

Загрузка набора данных

Нам нужно загрузить набор данных в переменные X и y, чтобы создать фрейм данных Pandas. X будет содержать функции, а y будет содержать целевые значения.

#create a DataFrame from the dataset
X=pd.DataFrame(data.data,columns=data.feature_names)
#Printing first five rows of the DataFrame
X.head()

#Load target values in y
y=pd.DataFrame(data.target,columns=[“target”])
y.head()

Теперь наши данные готовы, и мы можем обучить модель с помощью RandomForestRegressor.

Разделение набора данных

Давайте разделим набор данных в соотношении 80–20, используя функцию разделения поездов и тестов из sklearn.

#Splitting the Dataset
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
print(X_train.shape,y_train.shape,X_test.shape,y_test.shape)

Обучение модели

Теперь мы можем обучить модель с помощью RandomForestRegressor со случайно выбранными значениями для оценщиков. Вы также можете попробовать другое значение или использовать XGBoost вместо этого для обучения модели и сравнения.

#Training the model
model = RandomForestRegressor(n_estimators=50, max_depth=5)
model.fit(X_train, y_train.values.ravel())

Примечание. На этом этапе мы используем рекомендованную команду ‘ravel ()’ convert ‘y_train’ к 1d-массиву. Такое изменение формы вектора-столбца y позволит избежать DataConversionWarning, генерируемого RandomForestRegressor.

Настройка экземпляра Dashboard с использованием обученной модели

explainer = RegressionExplainer(model, X_test, y_test)
#Start the Dashboard
db = ExplainerDashboard(explainer,title=”Diabetes Prediction”,whatif=False)
#Running the app on a local port 3050
db.run(port=3050)

Эта панель мониторинга будет работать на локальном сервере с портом 3050 (или может отличаться в вашем случае, если вы выберете другой номер порта, например 8080 или 3000).

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

Ваша полностью интерактивная панель управления машинным обучением готова!

Вы можете найти полный код этой записной книжки в моем репозитории GitHub.

Аналитика с панели инструментов

С помощью этой панели инструментов мы можем получить некоторые сведения, например:

  • Значения Shap, которые показывают, как каждая отдельная функция влияет на прогноз.
  • Важность перестановки, которая позволяет нам копать глубже, чтобы визуализировать, как производительность модели ухудшается при перетасовке функции
  • В случае модели регрессии с использованием XGBoost или RandomForestRegressor, подобной этому руководству, мы можем визуализировать отдельные деревья решений, тогда как в случае моделей классификатора мы можем получить матрицу путаницы, кривые ROC-AUC и т. Д., Чтобы лучше понять решения моделей.
  • Что, если (в случае, если он включен при запуске панели инструментов), чтобы помочь понять изменения в поведении модели, если мы изменим функции или части данных. Это также позволяет нам сравнивать разные модели.

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

Это все для этого урока. Надеюсь, вы, как читатель, узнали что-то новое и интересное.

До следующей статьи, желаю удачного чтения!