LIME: локальные интерпретируемые объяснения
lime.tabular.LimeTabularExplainer, возмущение входных данных, локальная линейная аппроксимация
«LIME: локальные интерпретируемые объяснения» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.
Что такое LIME
LIME (локальные интерпретируемые объяснения, не зависящие от модели) объясняет одно предсказание, обучая простую интерпретируемую модель, например линейную регрессию, на поведении сложной модели в небольшой окрестности конкретного примера.
Локальный, а не глобальный анализ
Модель-«чёрный ящик» в целом может быть сильно нелинейной, но вблизи одной точки она примерно линейна. LIME использует это свойство: он объясняет не всю модель, а только её поведение локально, вокруг интересующего Вас примера.
Как работает LIME
LIME изменяет исходный пример, создавая множество близких примеров, просит модель-«чёрный ящик» классифицировать их, придаёт больший вес примерам, близким к исходному, а затем обучает интерпретируемую замещающую модель. Коэффициенты замещающей модели становятся объяснением.
Независимость от модели
Поскольку LIME обращается только к функции предсказания модели, он работает с любым классификатором или регрессором: нейронными сетями, градиентным бустингом и даже внешним программным интерфейсом. Модель рассматривается как «чёрный ящик».
LimeTabularExplainer
Для табличных данных создайте LimeTabularExplainer на основе обучающих данных и имён признаков. Он использует распределение обучающих данных, чтобы создавать реалистичные возмущённые примеры.
from lime.lime_tabular import LimeTabularExplainer
explainer = LimeTabularExplainer(
training_data=X_train.values,
feature_names=X_train.columns.tolist(),
class_names=["denied", "approved"],
mode="classification",
)explain_instance
Чтобы объяснить одну строку, вызовите explain_instance, передав строку и функцию модели predict_proba. LIME создаёт возмущения вокруг этой строки и обучает локальную замещающую модель.
exp = explainer.explain_instance(
data_row=X_test.values[0],
predict_fn=model.predict_proba,
num_features=5,
)Вероятности вместо предсказаний
Для классификации LIME нужны вероятности, а не жёсткие метки, поскольку замещающая модель обучается на поверхности вероятностей. Всегда передавайте model.predict_proba или любую функцию, возвращающую вероятности классов.
Параметр количества признаков
num_features ограничивает количество признаков, отображаемых в объяснении. Меньшее число даёт более простое и понятное объяснение, выделяя только наиболее сильные локальные факторы.
Чтение весов признаков
exp.as_list() возвращает объяснение в виде пар (условие для признака, вес). Положительный вес сдвигает предсказание в сторону предсказанного класса, а отрицательный — от него.
for feature, weight in exp.as_list():
print(feature, round(weight, 3))
# income > 50000 0.21
# debt_ratio > 0.4 -0.18Визуализация объяснения
LIME может представить объяснение в виде интерактивной диаграммы или представления в ноутбуке, показывая столбцы вкладов и предсказанные вероятности рядом друг с другом.
exp.show_in_notebook(show_table=True)
# or
fig = exp.as_pyplot_figure()LIME и SHAP
Оба метода объясняют отдельные предсказания, но между ними есть различия:
- SHAP имеет строгие теоретические гарантии (аддитивность, согласованность) и глобальное представление
- LIME легче понять, он не зависит от модели и интуитивен, но его локальная замещающая модель является приближением и может меняться из-за случайности при создании возмущений
Быстрая проверка
Проверьте свои знания о LIME.
Итоги
Вы изучили локальные объяснения с помощью LIME:
- LimeTabularExplainer создаётся на основе обучающих данных и имён признаков
explain_instanceиспользуетmodel.predict_probaдля обучения локальной замещающей модели- Количество признаков управляет размером объяснения
as_list()возвращает знаковые веса признаков- LIME не зависит от модели и работает локально, дополняя SHAP
Часто задаваемые вопросы
Урок «LIME: локальные интерпретируемые объяснения» бесплатный?
Да — полный текст урока «LIME: локальные интерпретируемые объяснения» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.
Чему я научусь в уроке «LIME: локальные интерпретируемые объяснения»?
lime.tabular.LimeTabularExplainer, возмущение входных данных, локальная линейная аппроксимация Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Learn AI with Python?
Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «LIME: локальные интерпретируемые объяснения»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Learn AI with Python?
Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Выявление предвзятости в моделях машинного обучения
- Значения SHAP для объяснимости моделей
- LIME: локальные интерпретируемые объяснения
- Этика искусственного интеллекта и системы управления