Значения SHAP для объяснимости моделей
shap.Explainer, TreeExplainer, графики влияния, пчелиные диаграммы, ранжирование важности признаков
«Значения SHAP для объяснимости моделей» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.
Зачем нужна объяснимость
Сложные модели точны, но непрозрачны. Объяснимость отвечает на вопрос «почему модель сделала именно такое предсказание?», что необходимо для доверия, отладки и соблюдения нормативных требований. SHAP — один из наиболее широко используемых методов объяснения.
Что измеряет SHAP
SHAP (SHapley Additive exPlanations) определяет вклад каждого признака в отдельное предсказание. Значения основаны на значениях Шепли из теории кооперативных игр: каждый признак — это «игрок», а его значение SHAP — справедливая доля результата предсказания относительно базового уровня.
Аддитивность
Значения SHAP являются аддитивными: базовое значение (средний результат модели) плюс сумма значений SHAP всех признаков равняется фактическому предсказанию. Благодаря этому каждое объяснение представляет собой полный и проверяемый разбор результата.
# prediction = base_value + sum(shap_values_for_each_feature)TreeExplainer
Для моделей на основе деревьев (XGBoost, LightGBM, случайных лесов) shap.TreeExplainer быстро вычисляет точные значения SHAP, используя структуру деревьев.
import shap
import xgboost
model = xgboost.XGBClassifier().fit(X_train, y_train)
explainer = shap.TreeExplainer(model)Вычисление shap_values
explainer.shap_values(X_test) возвращает матрицу: одно значение SHAP для каждого признака в каждой строке. Это исходные вклады, которые Вы будете визуализировать.
shap_values = explainer.shap_values(X_test)
print(shap_values.shape) # (n_samples, n_features)Диаграмма-рой summary_plot
shap.summary_plot создаёт диаграмму-рой: каждая точка соответствует одному примеру для одного признака. Положение показывает значение SHAP (направление и величину влияния), а цвет — значение признака. Признаки упорядочены по общей важности.
shap.summary_plot(shap_values, X_test)Как читать диаграмму-рой
Чтобы прочитать диаграмму-рой:
- Признаки в верхней части наиболее важны в целом
- Точки далеко справа повышают предсказание, а далеко слева — понижают его
- Цвет показывает направление влияния: например, большие значения признака (красные точки) справа означают, что «большое значение повышает предсказание»
Объяснение одного предсказания
SHAP особенно полезен на уровне отдельных примеров. Чтобы объяснить одну строку, нужны её значения SHAP и базовое значение модели.
idx = 0
base = explainer.expected_value
row_shap = shap_values[idx]force_plot
shap.force_plot показывает одно предсказание как совокупность сил, действующих от базового значения: признаки, отмеченные красным, повышают результат, а синие — понижают его. Итоговый результат достигает финального предсказания.
shap.force_plot(
explainer.expected_value,
shap_values[0],
X_test.iloc[0],
)waterfall_plot
shap.waterfall_plot — наиболее понятное представление одного предсказания. Оно начинается с базового значения и шаг за шагом добавляет вклад каждого признака, пока не достигает итогового результата; признаки упорядочены по величине вклада.
shap.waterfall_plot(
shap.Explanation(
values=shap_values[0],
base_values=explainer.expected_value,
data=X_test.iloc[0],
)
)Глобальный и локальный анализ
SHAP решает две задачи:
- Глобальный анализ:
summary_plotпоказывает, какие признаки в целом определяют работу модели - Локальный анализ:
force_plotиwaterfall_plotобъясняют одно конкретное предсказание
Оба представления используют одни и те же значения SHAP, поэтому дают согласованную картину на разных уровнях.
Быстрая проверка
Проверьте свои знания о SHAP.
Итоги
Вы изучили объяснимость моделей с помощью SHAP:
shap.TreeExplainer(model)вычисляет точные значения для моделей на основе деревьевexplainer.shap_values(X_test)возвращает вклады отдельных признаков- Диаграмма-рой
summary_plotпоказывает глобальную важность force_plotиwaterfall_plotобъясняют одно предсказание- Значения SHAP аддитивны: базовое значение + вклады = предсказание
Часто задаваемые вопросы
Урок «Значения SHAP для объяснимости моделей» бесплатный?
Да — полный текст урока «Значения SHAP для объяснимости моделей» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.
Чему я научусь в уроке «Значения SHAP для объяснимости моделей»?
shap.Explainer, TreeExplainer, графики влияния, пчелиные диаграммы, ранжирование важности признаков Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Learn AI with Python?
Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Значения SHAP для объяснимости моделей»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Learn AI with Python?
Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Выявление предвзятости в моделях машинного обучения
- Значения SHAP для объяснимости моделей
- LIME: локальные интерпретируемые объяснения
- Этика искусственного интеллекта и системы управления