Прогнозирующая сила модели машинного обучения и ее интерпретируемость долгое время считались противоположными. Но не больше ! За последние два или три года исследователи, отрасль и, в более широком смысле, сообщество специалистов по науке о данных начали проявлять повышенный интерес к тому, чтобы сделать машинное обучение более прозрачным или даже сделать его белым ящиком. Я написал серию статей на эту тему. Интерпретация модели - 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, если хотите получать обновления моих сообщений в блоге!