Пояснюваність SHAP

Пояснюваний ШІ в Python

Fouad Trad

Machine Learning Engineer

Вступ до SHAP

  • SHAPSHapley Additive exPlanations
  • Метод, незалежний від моделі
  • Використовує значення Шеплі з теорії ігор
  • Значення SHAP → кількісно оцінюють внесок ознак у передбачення

Логотип SHAP

Пояснюваний ШІ в Python

Поділ прибутку між учасниками гурту

Зображення музичного гурту.

Пояснюваний ШІ в Python

Пояснювачі SHAP

 

  • Обчислити значення SHAP
  • Пояснювачі для дерев → для деревоподібних моделей

Зображення показує, що пояснювачі SHAP поділяються на загальні (для будь-якої моделі) та спеціалізовані для конкретних типів моделей.

Пояснюваний ШІ в Python

Набір даних про вступ

GRE Score TOEFL Score University Rating SOP LOR CGPA Chance of Admit Accept
337 118 4 4.5 4.5 9.65 0.92 1
324 107 4 4 4.5 8.87 0.76 1
316 104 3 3 3.5 8 0.72 1
322 110 3 3.5 2.5 8.67 0.8 1
314 103 2 2 3 8.21 0.45 0

 

  • rf_reg: прогнозує шанс вступу
  • rf_class: прогнозує факт зарахування
  • X: датафрейм із ознаками
Пояснюваний ШІ в Python

Отримання значень SHAP

import shap
Регресія
explainer_reg = shap.TreeExplainer(rf_reg)

shap_values_reg = explainer_reg.shap_values(X)
Класифікація
explainer_class = shap.TreeExplainer(rf_class)

shap_values_class = explainer_class.shap_values(X)
Пояснюваний ШІ в Python

Розуміння виводу SHAP

Регресія
print(shap_values_reg.shape)  
(400, 6)

Зображення: значення SHAP як таблиця з тими самими розмірами, що й датафрейм X (кількість прикладів, кількість ознак)

Пояснюваний ШІ в Python

Розуміння виводу SHAP

Регресія
print(shap_values_reg.shape)  
(400, 6)

Зображення: значення SHAP як таблиця з тими самими розмірами, що й датафрейм X (кількість прикладів, кількість ознак)

Класифікація
print(shap_values_class.shape)
(400, 6, 2)

Виберіть значення позитивного класу

positive_values = shap_values_class[:,:,1]
Пояснюваний ШІ в Python

Важливість ознак

mean_shap_values_class = np.abs(shap_values_class[:, :, 1]).mean(axis=0)
mean_shap_values_reg = np.abs(shap_values_reg).mean(axis=0)

plt.bar(X_train.columns, mean_shap_values_class) plt.bar(X_train.columns, mean_shap_values_reg)

Зображення важливості ознак для регресії та класифікації: CGPA та GRE мають найбільший вплив на прогноз зарахування.

Пояснюваний ШІ в Python

Давайте потренуємось!

Пояснюваний ШІ в Python

Preparing Video For Download...