Визуализация объяснимости SHAP

Объяснимый ИИ на Python

Fouad Trad

Machine Learning Engineer

Набор данных

age gender bmi children smoker charges
19 0 27.900 0 1 16884.92
18 1 33.770 1 0 1725.55
28 1 33.000 3 0 4449.46
33 1 22.705 0 0 21984.47
32 1 28.880 0 0 3866.85

model: регрессор на основе случайного леса для предсказания charges

import shap
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X)
Объяснимый ИИ на Python

График важности признаков

  • Показывает вклад каждого признака в выходное значение модели
shap.summary_plot(shap_values, X, plot_type="bar")

График важности признаков, показывающий, что статус курильщика является наиболее важным признаком.

Объяснимый ИИ на Python

График beeswarm

  • Показывает распределение значений SHAP
  • Отражает направление и величину влияния каждого признака на предсказание
    • Красный цвет → высокое значение признака
    • Синий цвет → низкое значение признака
    • SHAP value > 0 → увеличивает результат
    • SHAP value < 0 → уменьшает результат

График beeswarm, показывающий распределение значений SHAP для каждого признака; цвет отражает значение признака.

Объяснимый ИИ на Python

График beeswarm

  • Показывает распределение значений SHAP
  • Отражает направление и величину влияния каждого признака на предсказание
    • Красный цвет → высокое значение признака
    • Синий цвет → низкое значение признака
    • SHAP value > 0 → увеличивает результат
    • SHAP value < 0 → уменьшает результат

Тот же график beeswarm, выделяющий, что высокие значения признака «smoker» соответствуют положительным значениям SHAP.

Объяснимый ИИ на Python

График beeswarm

  • Показывает распределение значений SHAP
  • Отражает направление и величину влияния каждого признака на предсказание
    • Красный цвет → высокое значение признака
    • Синий цвет → низкое значение признака
    • SHAP value > 0 → увеличивает результат
    • SHAP value < 0 → уменьшает результат
shap.summary_plot(shap_values, X, 
                  plot_type="dot")

Тот же график beeswarm, выделяющий, что низкие значения признака «smoker» соответствуют отрицательным значениям SHAP.

Объяснимый ИИ на Python

График частичной зависимости

  • Показывает связь между признаком и предсказанным результатом
  • Отражает влияние признака во всём диапазоне его значений
  • Позволяет проверить, соответствует ли зависимость ожиданиям

Обобщённый график частичной зависимости, показывающий убывающую зависимость между признаком и результатом.

Объяснимый ИИ на Python

График частичной зависимости

  • Для каждого наблюдения:
    • Изменяется значение выбранного признака
    • Остальные признаки фиксируются
    • Вычисляется предсказанный результат
  • Усредняются результаты по всем наблюдениям
shap.partial_dependence_plot("age", 
                             model.predict, 
                             X)

График частичной зависимости для признака age: с ростом возраста предсказанное значение увеличивается.

Объяснимый ИИ на Python

График частичной зависимости

  • Для каждого наблюдения:

    • Изменяется значение выбранного признака
    • Остальные признаки фиксируются
    • Вычисляется предсказанный результат
  • Усредняются результаты по всем наблюдениям

shap.partial_dependence_plot("age", 
                             model.predict, 
                             X)

Тот же график частичной зависимости, выделяющий распределение значений признака age в наборе данных.

Объяснимый ИИ на Python

Давайте потренируемся!

Объяснимый ИИ на Python

Preparing Video For Download...