Объясните модель машинного обучения | Навстречу AI

Покажи мне черный ящик

Объясните и интерпретируйте модель черного ящика; вариант использования древовидного алгоритма

Вы когда-нибудь сталкивались с ситуацией, когда бизнес (руководители или пользователи) оспаривал решения, принятые в рамках модели?

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

объяснимость и интерпретируемость стали одной из горячих тем в реальном мире (см. Некоторые новости ниже). Мы знаем что предсказывают, но теперь мы хотим знать, почему предсказание. Знание причины, по сути, может привести нас к пониманию источника проблемы (в первую очередь, почему мы строим модель) и помочь предотвратить ее с самого начала.





В этом посте мы рассмотрим некоторые методы интерпретации модели. Используя классификацию Light GBM, но эту концепцию можно применить к любому алгоритму и задаче регрессии).

Модель Интерпретации

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

Обычно мы будем рассматривать интерпретацию как два основных класса: локальный и глобальный.

  1. Локальная интерпретируемость: подробно объясните, как был сделан каждый отдельный прогноз. Это поможет пользователям доверять нашей модели и понять, как модель / рекомендации делаются.
  2. Глобальная интерпретируемость: дайте общее представление о структуре модели, о том, как модель работает в целом. Это более важно для пожилых людей или спонсоров, которым необходимо понимать модель на высоком уровне.

Теперь перейдем к каждому методу.

1. Важность функции

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

Однако есть ключ, который нам нужен, чтобы понять, что представляет собой ценность. Есть несколько расчетов / типов:

  • Прирост подразумевает относительный вклад в модель, рассчитанный с использованием вклада каждой функции в каждое дерево в модели. Чем выше значение, тем важнее функция для прогнозирования результата.
  • Покрытие - это относительное количество наблюдений, относящихся к каждой функции, выраженное в процентах для показателей покрытия всех функций. Давайте посмотрим на пример: Feature x используется для определения наблюдений за листовым узлом a, b и c, следовательно, охват равен a+b+c.
  • Вес - это процентное отношение, представляющее относительное количество раз, когда объект встречается в деревьях модели, и выражается как его процентное соотношение веса над всеми объектами.

Как правило, мы сосредоточимся на использовании усиления каждой функции.

2. ELI5

Eli5 (или объяснил, как мне 5) - это пакет, который помогает лучше понять модель машинного обучения и объяснить их прогнозы.

Есть два основных способа взглянуть на классификацию или регрессионную модель:

  1. Изучите параметры модели и попытайтесь выяснить, как модель работает в глобальном масштабе (eli5.show_weights())
  2. Изучите индивидуальный прогноз модели, попытайтесь выяснить, почему модель принимает решение (eli5.show_prediction())
eli5.show_weights(lgb_model)

Приведенная выше оценка действует аналогично важности характеристик.

Еще одна вещь, которую мы можем сделать с eli5, - это важность перестановки или среднее уменьшение точности (MDA). Идея состоит в том, что важность функции можно измерить, посмотрев, насколько уменьшается оценка, которая может быть точностью, F1, когда функция недоступна.

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

Результат важности перестановки показан в следующей форме, x±y, значения вверху являются наиболее важными характеристиками. Первое число показывает, насколько снизилась производительность модели при случайном перемешивании. Знак ± показывает некоторую случайность точного изменения производительности при перемешивании функции. Эта случайность измеряется путем повторения процесса перетасовки, в результате чего получается второе число.

Иногда важность перестановки приводит к отрицательным значениям. Это означает, что прогнозы, полученные на основе перемешанных данных, в конечном итоге более точны, чем реальные данные.

Однако он не говорит вам, насколько важна каждая функция. Если функция имеет среднюю важность перестановки, это может означать, что она имеет;

  • Большой эффект для нескольких прогнозов, но без эффекта в целом, или
  • Средний эффект для всех прогнозов

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

eli5.explain_prediction_lightgbm(lgb_model, X_test.iloc[1])

Обратите внимание на значение <BIAS>, это связано с тем, что реализация объяснителя в eli5 начинает реконструировать оценки псевдо-листьев для каждого узла во всех деревьях. Алгоритм также применяется к корневым узлам деревьев, которым аналогичным образом присваиваются баллы псевдо-листьев. Суммированная по всем деревьям, эта сумма оценок всех корневых узлов представляет собой средний балл, который вы можете получить, пройдя по всем деревьям. Это то, что <BIAS> в eli5.

3. PDP

График частичной зависимости (PDP) - это метод глобальной интерпретации; метод рассматривает все экземпляры и дает утверждение о глобальной связи функции с прогнозируемым результатом. Его можно использовать, чтобы показать, являются ли отношения между целью и объектом линейными, монотонными или более сложными.

Для задач классификации, когда модель выводит вероятности, PDP отображает вероятность для определенного класса при различных значениях для признака.

Обратите внимание на разницу между важностью функции и частичной зависимостью;

  • Важность функции показывает, какие переменные больше всего влияют на прогнозы
  • Частичная зависимость показывает, как функция влияет на прогнозы.

PDP очень полезен и может дать дополнительную информацию по следующим вопросам;

  1. Как будут оцениваться дома одинакового размера в разных районах?
  2. Разница в прогнозируемых исходах между двумя группами объясняется различиями в конкретных характеристиках?

Давайте посмотрим на пример использования и полученный сюжет.

pdp_goals = pdp.pdp_isolate(model=lgb_model, dataset=X_test, 
                            model_features=X_test.columns,  
                            feature='age')
pdp.pdp_plot(pdp_goals, 'Ages')
plt.show()

fig, axes = pdp.pdp_plot(pdp_goals, 'Ages', center=True,                                                           
                         plot_lines= True, x_quantile=True, 
                         show_percentile=True, frac_to_plot=100, 
                         plot_pts_dist=True)
plt.show()

Здесь мы видим, что Ages характеристика увеличивается с 40 до 50, вероятность исхода (выхода) увеличивается. Однако эффективность этой функции снижается.

Обратите внимание, что когда мы интерпретируем график, оценки частичного разряда менее надежны для региона, когда точки данных недоступны.

Другой вариант использования - увидеть частичную зависимость сразу двух функций:

На этом графике мы можем видеть PDP клиентов, вышедших из банка, вероятность и взаимодействие возраста и количества характеристик продукта. Опять же, будьте осторожны, делая выводы, любое увеличение / уменьшение вероятности может быть просто корреляцией, а не причинно-следственной связью.

4. ИЗВЕСТЬ

LIME (Local Interpretable Model-Agnostic Explanations) - это метод, который является реализацией локальных суррогатных моделей. Вместо обучения глобальной суррогатной модели LIME фокусируется на обучении локальной суррогатной модели для объяснения индивидуальных прогнозов путем построения разреженной линейной модели вокруг каждого прогноза, чтобы объяснить, как работает модель черного ящика.

В LIME мы можем использовать измерение точности, насколько хорошо интерпретируемая модель аппроксимирует прогнозы черного ящика, чтобы увидеть, насколько надежна интерпретируемая модель в объяснении прогнозов.

На момент написания LIME - один из немногих методов, который работает с табличными данными, текстом и изображениями.

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

Затем мы можем передать каждый отдельный набор данных объяснителю, чтобы объяснить прогноз.

lime_explainer = lime.lime_tabular.LimeTabularExplainer(
   X_train.values,
   feature_names=X_train.columns.values.tolist(),
   class_names=['non_exited', 'exited'],
   verbose=True, mode='classification')
expLgb = lime_explainer.explain_instance(
   data_row=X_test.values[1], 
   predict_fn=lgb_model.predict_proba, 
   num_features=3)
expLgb.show_in_notebook(show_table=True)

В конечном итоге мы можем увидеть, какие функции влияют на прогноз и вероятность его окончания. Обратите внимание, что в этом случае я показал только 3 основные функции.

5. SHAP

SHAP (SH apley A dditive ex P lanations) - это метод объяснения индивидуальных прогнозов путем вычисления вклада каждой функции в прогноз. Однако SHAP также имеет множество глобальных методов интерпретации, основанных на агрегировании значений Шепли. Метод SHAP основан на игре теоретически оптимальных значений Шепли.

Техническое определение значения Шепли - это средний предельный вклад значения характеристики по всем возможным коалициям. Или значения Шепли рассматривают все возможные прогнозы для экземпляра с использованием всех возможных комбинаций входных данных. Следовательно, значение Шепли - единственный метод объяснения с твердой теорией, в отличие от LIME, который предполагает линейное поведение модели машинного обучения локально.

Метод SHAP соединяет LIME вместе со значениями Шепли. Давайте посмотрим, как мы можем использовать SHAP для интерпретации и объяснения модели (как глобальной, так и локальной).

SHAP использует значения Шепли для отображения важности функции или основывается на величине атрибуции признаков, это отличается от важности перестановки признаков.

Этот график сочетает в себе важность особенностей с эффектами особенностей. Каждая точка на графике представляет собой значение Шепли для объекта и цели. Функции упорядочены в соответствии с их важностью (аналогично рис. 12). Цвет представляет значение функции, а по оси X - значение Шепли.

SHAP также поддерживает график зависимости, который может показать, как отдельный элемент влияет на выходные данные модели, с помощью функции dependence_plot().

На графике ниже показано, как функция age взаимодействует с прогнозом. Функция выберет другую функцию для визуализации (цвет), мы можем отключить ее с помощью interaction_index=None.

SHAP обеспечивает визуализацию для каждого отдельного прогноза, в этом случае мы можем узнать, как каждое значение SHAP влияет на прогноз. Базовое значение на графике - это среднее значение всех значений Шепли всех прогнозов.

У SHAP также есть несколько недостатков:

  • Значение Шепли требует много вычислительного времени, за исключением древовидного алгоритма.
  • Это может быть неверно истолковано, это не разница в прогнозируемом значении после удаления признака из обучения модели. Но скорее, учитывая текущий набор значений признаков, вклад значения признака в разницу между фактическим прогнозом и средним прогнозом является оценочным значением Шепли.
  • Значения Шепли всегда используют все функции для вычисления

Заключение

Я предоставил базовый метод интерпретации нашей модели черного ящика, хотя пример основан на Light GBM, но большинство методов можно повторно использовать с другим алгоритмом. Вы можете выбрать, какие методы лучше всего подходят для вашего варианта использования, а также кому вы собираетесь представить (например, выбирая локальную интерпретацию для практических пользователей, которые взаимодействуют и используют результат модели, чтобы сделать решение и глобальная интерпретация для руководителей бизнеса, чтобы увидеть, какие факторы - особенности - влияют на модель или проблему, которую мы пытаемся решить).

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