Введение
В своей предыдущей статье я описал, почему существует большая потребность в понимании моделей машинного обучения и каковы некоторые из методов. Я также подробно объяснил ELI5, как его можно использовать для более глубокого понимания модели.
В этой статье я подробно расскажу о другой технике - ЛАЙМ.
LIME (местные интерпретируемые независимые от модели объяснения)
LIME был предложен как часть статьи «Почему я должен вам доверять?»: Объяснение прогнозов любого классификатора », опубликованной в августе 2016 года Марко Тулио Рибейро, Самиром Сингхом, Карлосом Гестрином. Python и Р.
Интуиция
Локальный: объясняет, почему отдельная точка данных была отнесена к определенному классу.
Независимость от модели: рассматривает модель как черный ящик. Не нужно знать, как он делает прогнозы
Все модели глубокого обучения, работающие с большими данными, имеют большое количество функций, которые необходимо точно прогнозировать. Результирующая n-мерная кривая, сгенерированная моделью глубокого обучения, очень сложна для понимания и интерпретации.
LIME предлагает сосредоточиться на интерпретации на местном уровне, а не на интерпретации глобальной модели. Мы можем увеличить точку данных в модели, а затем детально найти, какие особенности повлияли на модель, чтобы прийти к определенному выводу.
LIME не заботится о модели машинного обучения, используемой вами (сейчас или в будущем). Он будет рассматривать его как черный ящик и сосредоточится на интерпретации локального результата.
Как работает LIME
Для данного наблюдения :
- Перестановка данных -Создайте новый набор данных вокруг наблюдения путем выборки из распределения, полученного на обучающих данных (в наборе данных Perturbed для числовых характеристик выбираются на основе распределения и категориальные значения на основе вхождения)
- Вычислить расстояние между перестановками и исходными наблюдениями
- Используйте модель для прогнозирования вероятности новых точек, это наш новый y
- Выберите m функций, наилучшим образом описывающих результат сложной модели из переставленных данных.
- Подобрать линейную модель для данных в размерах m, взвешенных по сходству
- Веса линейной модели используются как объяснение решения.
Как использовать эту библиотеку в Python
Мы будем использовать набор банковских маркетинговых данных - ССЫЛКА. Все этапы анализа данных описаны в предыдущей статье. Используя этот набор данных, мы построим модели для линейной регрессии, дерева решений, случайного леса и легкой GBM (см. Код на GitHub).
После создания наших моделей мы начнем использовать LIME, создав экземпляр нового explainer
с помощью LimeTabularExplainer
. Аргументы
- ваши тренировочные данные с категориальными значениями, преобразованными в формат LIME
- укажите
mode
регрессию или классификацию feature_names
: список имен для ваших столбцовcategorical_names
: наш словарь, который сопоставляет категориальные признаки с их возможными значениями.categorical_features
: список указателя категориальных характеристик
explainer = LimeTabularExplainer( convert_to_lime_format(X_train,categorical_names).values, mode="classification", feature_names=X_train.columns, categorical_names=categorical_names, categorical_features=categorical_names.keys(), random_state=42)
Мы выберем одну строку для интерпретации результатов
i = 4 print(X_test.iloc[i])
Теперь запустим интерпретацию этого ряда для каждой из наших 4 моделей.
explanation = explainer.explain_instance(observation, lr_predict_proba, num_features=5) explanation.show_in_notebook(show_table=True, show_all=False)
Центральный график показывает вклад основных характеристик в прогноз, соответствующий весам линейной модели. Таким образом, для этого клиента стоимость подписки верна, поскольку с ним связались по телефону в июне. Тот факт, что к нему обращались более 3 раз в этой кампании, мог быть негативным фактором.
LIME подбирает линейную модель на локальном наборе данных. Можно найти коэффициенты, точку пересечения и квадрат R линейной модели, вызвав следующие функции
print(explanation.local_exp) print(explanation.intercept) #R2 score print(explanation.score)
Можно заметить веса, изображенные на картинке выше, как значения local_exp. Оценка R2 для модели линейной регрессии довольно низкая.
Мы также попробовали модель LightGBM, и ниже приведены результаты
Недостатки LIME
- Зависит от случайной выборки новых точек, поэтому может быть нестабильным
- Подгонка линейной модели может быть неточной
- Медленно обрабатывает изображения
Заключение
LIME - хороший инструмент для понимания моделей черного ящика. Не требуется много усилий, чтобы найти подробности об особенностях, влияющих на решение модели. Он работает независимо от модели, используемой сегодня или в будущем. Вы можете найти код на моем GitHub
Если у вас есть какие-либо вопросы по LIME, дайте мне знать, и я буду рад помочь. Подпишитесь на меня в Medium или LinkedIn, если хотите получать обновления моих сообщений в блоге!