SHAP 설명 시각화

Python으로 배우는 Explainable AI

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: 요금 예측을 위한 랜덤 포레스트 회귀기

import shap
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X)
Python으로 배우는 Explainable AI

특성 중요도 플롯

  • 각 특성이 모델 출력에 기여한 정도 표시
shap.summary_plot(shap_values, X, plot_type="bar")

흡연 여부가 가장 중요한 특성임을 보여주는 특성 중요도 플롯.

Python으로 배우는 Explainable AI

벌떼(비즈스웜) 플롯

  • SHAP 값 분포 표시
  • 각 특성의 예측에 대한 방향크기 강조
    • 빨간색 → 특성값 높음
    • 파란색 → 특성값 낮음
    • SHAP 값 > 0 → 예측 증가
    • SHAP 값 < 0 → 예측 감소

각 특성의 SHAP 값 분포를 색으로 특성값을 표시한 벌떼 플롯.

Python으로 배우는 Explainable AI

벌떼(비즈스웜) 플롯

  • SHAP 값 분포 표시
  • 각 특성의 예측에 대한 방향크기 강조
    • 빨간색 → 특성값 높음
    • 파란색 → 특성값 낮음
    • SHAP 값 > 0 → 예측 증가
    • SHAP 값 < 0 → 예측 감소

동일한 벌떼 그래프에서 'smoker' 특성의 높은 값이 양의 SHAP 값을 갖는 것을 강조.

Python으로 배우는 Explainable AI

벌떼(비즈스웜) 플롯

  • SHAP 값 분포 표시
  • 각 특성의 예측에 대한 방향크기 강조
    • 빨간색 → 특성값 높음
    • 파란색 → 특성값 낮음
    • SHAP 값 > 0 → 예측 증가
    • SHAP 값 < 0 → 예측 감소
shap.summary_plot(shap_values, X, 
                  plot_type="dot")

동일한 벌떼 그래프에서 'smoker' 특성의 낮은 값이 음의 SHAP 값을 갖는 것을 강조.

Python으로 배우는 Explainable AI

부분 의존 플롯

  • 특성예측 결과의 관계 표시
  • 특성 범위 전반의 영향 표시
  • 관계가 기대와 일치하는지 확인

특성과 결과의 관계를 감소 함수로 보여주는 일반적인 부분 의존 플롯.

Python으로 배우는 Explainable AI

부분 의존 플롯

  • 각 샘플에 대해:
    • 선택한 특성 값을 변경
    • 다른 특성은 고정
    • 결과 예측
  • 모든 샘플 결과를 평균
shap.partial_dependence_plot("age", 
                             model.predict, 
                             X)

나이가 증가할수록 예측 값이 증가함을 보여주는 age 특성의 부분 의존 플롯.

Python으로 배우는 Explainable AI

부분 의존 플롯

  • 각 샘플에 대해:

    • 선택한 특성 값을 변경
    • 다른 특성은 고정
    • 결과 예측
  • 모든 샘플 결과를 평균

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

데이터셋의 age 분포를 강조한 동일한 부분 의존 플롯.

Python으로 배우는 Explainable AI

Ayo berlatih!

Python으로 배우는 Explainable AI

Preparing Video For Download...