Прогнозирующая сила модели машинного обучения и ее интерпретируемость долгое время считались противоположными. Но не больше ! За последние два или три года исследователи, отрасль и, в более широком смысле, сообщество специалистов по науке о данных начали проявлять повышенный интерес к тому, чтобы сделать машинное обучение более прозрачным или даже сделать его белым ящиком. Я написал серию статей на эту тему. Интерпретация модели - ELI5 и важность перестановки и LIME, объясняющие необходимость интерпретации модели и задействованных методов. В этой статье я расскажу о новом пакете от Microsoft InterpretML.

Введение

Interpret ML - это пакет с открытым исходным кодом, который объединяет под одной крышей самые современные методы интерпретируемости машинного обучения. С помощью этого пакета вы можете обучать интерпретируемые модели Glassbox и объяснять системы черного ящика. Это набор инструментов и пакетов с упором на интерпретацию, который содержит множество ключевых техник объяснимости. Интерпретировать-текст поддерживает набор методов интерпретируемости для моделей, обученных на текстовых данных. Azureml-Interpret предоставляет оболочку Azureml для выполнения всех методов интерпретации на лазурном сервере.

Подход интерпретируемости

В Интерпрете алгоритмы объяснимости разделены на два основных раздела - Модели Glassbox и Пояснения к Blackbox.

Модели Glassbox

Модели Glassbox означают алгоритмы обучения, которые предназначены для интерпретации, то есть линейные модели, деревья решений. Модели Glassbox обычно обеспечивают точную объяснимость, то есть вы можете отслеживать и рассуждать о том, как любой Glassbox принимает свои решения. Помимо обычных моделей обучения scikit, Glassbox содержит новую модель под названием Explainable Boosting Machine (EBM).

Объяснимая ускоряющая машина (EBM)

EBM - это интерпретируемая модель, разработанная в Microsoft Research. Он использует современные методы машинного обучения, такие как упаковка, повышение градиента и автоматическое обнаружение взаимодействия, а также GAM (обобщенные аддитивные модели). Это делает EBM такими же точными, как и современные методы, такие как случайные леса и деревья с градиентным усилением. Однако, в отличие от этих моделей черного ящика, EBM дают интерпретируемые объяснения.

Концепция

Линейные модели легко интерпретируемы, но часто не обеспечивают высокой точности, обеспечиваемой сложными моделями.

Y = B1X1 + B2X2 + ……. + BnXn + ϵ. (1, 2, n - все индексы)

Чтобы решить эту проблему, статистики создали GAM (обобщенные аддитивные модели), которые сохраняют аддитивную структуру (интерпредадекватность линейной модели), но делают их более гибкими и точными.

Y = f1 (X1) + f2 (X2) + f3 (X3)… .fn (Xn). (1, 2, n - все индексы)

Исследователи Microsoft усовершенствовали GAM с помощью такой техники, как Boosting & Bagging. EBM по-прежнему интерпретируется, как модель Liner, но обеспечивает точность на уровнях сложных моделей, таких как XgBoost и т. Д.

Y = ∑i fi (Xi) + ∑ij fij (Xi, Xj). (i, j все индексы)

Внизу EBM работает следующим образом. Предположим, что в наборе данных есть n объектов. EBM создаст дерево, основанное только на Feature 1, и с использованием алгоритма ускорения перейдет по остатку к следующему дереву. Теперь обучите небольшое дерево, которое может смотреть на Feature 2 и передавать остаток. Это будет продолжаться до Feature N. Эта итерация моделирования дерева для каждого признака и передаваемых остатков может выполняться, например: 5000 раз. В конце итерации для каждой функции у вас есть 5000 деревьев, обученных каждой функции. Таким образом, он может найти лучшую функцию функции f () для каждой функции и показать, как каждая функция влияет на прогноз модели для проблемы. Все эти модели обучаются параллельно, потому что мы продолжаем циклически перебирать модели.

Реализация (Прогноз и интерпретация)

Я представил подробную реализацию классификаторов EBM в моем блокноте Github. Я буду использовать набор банковских маркетинговых данных - ССЫЛКА. Эти данные связаны с кампаниями прямого маркетинга португальского банковского учреждения. Нам нужно предсказать, будет ли продукт (срочный банковский депозит) (да) или нет (нет) подписываться клиентом в рамках этой кампании. Начнем с установки библиотеки InterpretML.

pip install interpret

После предварительной обработки данных (описанной в Блокноте) мы сначала разберемся с данными, используя полезный ClassHistogram(), который позволяет выполнять EDA для набора данных. Чтобы использовать это, в наборе данных не должно быть пропущенных значений, поэтому убедитесь, что предварительная обработка выполняется заранее.

from interpret import show
from interpret.data import ClassHistogram
hist = ClassHistogram().explain_data(X_train, y_train, name = 'Train Data')
show(hist)

Это создаст панель мониторинга с гистограммами Plotly, где цвета представляют, подписался ли клиент (1) или не подписан (0) на продукт.

Теперь давайте попробуем EBM. Поместим его на тренировочные данные

from interpret.glassbox import ExplainableBoostingClassifier
ebm = ExplainableBoostingClassifier(random_state=42)
ebm.fit(X_train, y_train)

После настройки пора проверить G общие объяснения с помощью EBM.

ebm_global = ebm.explain_global(name='EBM')
show(ebm_global)

Сводка по важности функций показывает, что две категориальные характеристики contact_celluar и contact_telephone являются очень важными функциями. Можно также изучить отдельные характеристики, чтобы увидеть влияние, например: Характеристика возраста показывает, что кампания имела больший успех у пожилых людей (старше 60 лет).

EBM также можно использовать для местных объяснений. В приведенном ниже фрагменте мы увидим объяснение для первых 4 записей. Мы можем заметить, что для записи 3 прогнозируемое значение составляет 0,085, а фактическое значение - 0. Несмотря на то, что месяц июнь внес положительный вклад, но не звонки через Celluar и звонки по телефону, похоже, отрицательно повлияли на результат.

ebm_local = ebm.explain_local(X_test[:4], y_test[:4], name='EBM')
show(ebm_local)

Прогнозирование с помощью EBM

Мы будем использовать кривую ROC, чтобы объяснить качество предсказания EBM. Код ниже можно использовать для рисования кривой ROC.

from interpret.perf import ROC
ebm_perf = ROC(ebm.predict_proba).explain_perf(X_test, y_test, name=’EBM’)
show(ebm_perf)

Мы можем сравнить EBM по качеству прогнозирования с логистической регрессией, деревом классификации и Light GBM. Точность EBM (AUC = 0,77)) очень близка к результатам Light GBM (AUC = 0,78), которые можно найти ниже.

lr_perf = ROC(lr_model.predict_proba).explain_perf(X_test, y_test, name=’Logistic Regression’)
tree_perf = ROC(rf_model.predict_proba).explain_perf(X_test, y_test, name=’Classification Tree’)
lgbm_perf = ROC(lgb_model.predict_proba).explain_perf(X_test, y_test, name=’Light GBM’)
ebm_perf = ROC(ebm.predict_proba).explain_perf(X_test, y_test, name=’EBM’)
show(lr_perf)
show(tree_perf)
show(ebm_perf)
show(lgbm_perf)

Панель управления

Dashboard - отличная функция от Interpret ML, которая позволяет вам видеть все результаты в одном представлении. Доступные объяснения разделены на вкладки, каждая из которых охватывает аспект конвейера.

  • Данные охватывает исследовательский анализ данных, предназначенный в основном для функционального уровня.
  • Производительность охватывает производительность модели как в целом, так и в пользовательских группах.
  • Global объясняет решения модели в целом.
  • Местный объясняет типовое решение для каждого случая / наблюдения.
lr_global = lr_model.explain_global(name=’LR’)
tree_global = rf_model.explain_global(name=’Tree’)
show([hist, lr_global, lr_perf, tree_global, tree_perf,ebm_global,ebm_local,ebm_perf], share_tables=True)

Вкладка «Данные»: предоставляет сводное представление и представление на уровне функций. получить представление о данных

Вкладка «Производительность»: ее можно использовать для просмотра показателей точности всех используемых моделей.

Вкладка Global: ее можно использовать для просмотра глобальной интерпретации всех моделей, используемых для прогнозирования, в одном представлении.

Вкладка Local: ее можно использовать для просмотра локальной интерпретации всех моделей, используемых для прогнозирования, в одном представлении.

Вывод

Microsoft Interpret ML предоставляет новую современную технику моделирования Explainable Boosting Machine (EBM) и современные алгоритмы интерпретируемости в рамках единого API. Этот API предоставляет модели Glassbox, которые по своей сути понятны и объяснимы для пользователя, и модели Blackbox, которые генерируют объяснения для любого машинного обучения независимо от его сложности с использованием таких методов интерпретации, как LIME, SHAP, графики частичной зависимости и т. Д. Dashboards обеспечивает отличную интерактивную визуализацию и сравнение алгоритмов интерпретируемости. Теперь этот пакет также поддерживается в R.

Вы можете найти код на моем GitHub. В следующей статье я расскажу о функциональности модели Blackbox, предоставляемой Interpret ML.

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