SHAP을 통한 로컬 설명 가능성

Python으로 배우는 Explainable AI

Fouad Trad

Machine Learning Engineer

글로벌 vs. 로컬 설명 가능성

글로벌 설명 가능성
  • 모델의 전반적 동작
  • 개별 인스턴스는 설명하지 않음

교수가 전체 학생들에게 학급의 전반 성과를 설명하는 모습.

로컬 설명 가능성
  • 특정 데이터 포인트의 예측을 설명
  • 민감한 업무에 중요

교수가 특정 학생에게 성적 이유를 설명하는 모습.

1 이미지는 DALL-E로 생성됨
Python으로 배우는 Explainable AI

심장병 데이터셋

age sex chest_pain_type blood_pressure ecg_results thalassemia target
52 1 0 125 1 3 0
53 1 0 140 0 3 0
70 1 0 145 1 3 0
61 1 0 148 1 3 0
62 0 0 138 1 2 0

 

knn: 심장병 위험을 예측하는 KNN 분류기

Python으로 배우는 Explainable AI

SHAP으로 로컬 설명하기

explainer = shap.KernelExplainer(knn.predict_proba, shap.kmeans(X, 10))

test_instance = X.iloc[0, :]
shap_values = explainer.shap_values(test_instance)
print(shap_values.shape)
(6, 2)
Python으로 배우는 Explainable AI

SHAP 워터폴 차트

  • 특성이 예측을 높이거나 낮추는지 보여 줍니다

여러 특성과 각 특성이 예측에 기여한 정도를 보여 주는 워터폴 차트.

Python으로 배우는 Explainable AI

SHAP 워터폴 차트

  • 특성이 예측을 높이거나 낮추는지 보여 줍니다

기준값을 보여 주는 동일한 워터폴 차트로, 예측의 시작점으로 사용됩니다.

Python으로 배우는 Explainable AI

SHAP 워터폴 차트

  • 특성이 예측을 높이거나 낮추는지 보여 줍니다

워터폴 차트에서 오른쪽으로 밀면 예측이 증가하고, 왼쪽으로 밀면 감소함을 보여 주는 동일한 차트.

Python으로 배우는 Explainable AI

워터폴 차트 만들기

shap.waterfall_plot(

shap.Explanation(
values=shap_values[:,1],
base_values=explainer.expected_value[1],
data=test_instance,
feature_names=X.columns
)
)
Python으로 배우는 Explainable AI

여러 인스턴스의 워터폴

각 샘플에 대한 네 개의 워터폴 차트를 보여 주며, 서로 다른 샘플이 모델 결정에 이르는 경로가 다름을 나타냅니다.

Python으로 배우는 Explainable AI

연습해 봅시다!

Python으로 배우는 Explainable AI

Preparing Video For Download...