sol’s blog

SHAP(Shapley Additive exPlanations)

SHAP 값의 원리와 특징, 활용 시점, 기존 feature importance와의 차이점, 신뢰도 및 적용 가능 모델 범위에 대해 알아본다.

sol-commits
sol-commits May 16, 2025
 

SAHP Value의 원리

Callout icon'
  • 게임 이론의 Shapley value 개념을 기반으로 함

여러 플레이어가 협력해 얻은 보상을 각 플레이어가 기여한 정도에 따라 공정하게 분배하는 방법

게임 이론의 Shapley value 개념을 머신러닝에 적용 → 모델 예측값에 기여한 기여도(마진) 을 계산

  • 특정 feature 가 없을 때와 있을 때 모델 예측 차이를 여러 feature 조합에 대해 평균내어 산출
    • 예시

      피처 3개(A, B, C)가 있을 때, A의 SHAP 값은 다음을 평균 내서 계산

      • A가 없는 상태에서 예측한 값과
      • A를 추가한 상태에서 예측한 값의 차이
  • 각 샘플별로 각 feature 가 예측에 미친 영향을 수치화
    • 양수 → 예측값을 증가
    • 음수 → 예측값을 감소
    • → 각 feature의 SHAP 값 절댓값 평균을 내어 global feature 중요도를 얻음

 

SHAP 사용 목적과 장점

개별 예측 해석
단순히 feature 중요도 순위만 알려주는 것이 아니라, 왜 특정 예측이 나왔는지 각 feature가 어떻게 기여했는지 상세히 설명
설명 가능한 AI(XAI)
의료, 금융 등 예측 결과의 투명성이 중요한 분야에서 신뢰성 높은 해석을 제공
feature 간
상호작용과 의존성 반영
SHAP는 feature들이 서로 영향을 미치는 상황에서도 각 feature의 기여도를 공정하게 평가
- 예를들어, 범죄율과 저소득자 비율이 상호 연관된 경우에도 각각의 영향력을 분리해 해석 가능
모델 독립적 해석 가능
SHAP는 트리 기반 모델뿐 아니라 딥러닝, 선형 모델 등 다양한 모델에 적용 가능
- 다만, 트리 모델에서는 TreeExplainer 를 통해 계산이 빠르고 정확하며, 딥러닝 등 다른 모델에서는 KernelExplainer 등으로 해석하지만 계산 비용과 정확도에 한계가 있을 수 있음

기존 Feature Importance와 SHAP의 차이점

구분
기존 feature importance
SHAP value
해석 대상
모델 전체에서 feature 중요도 순위
개별 예측에 대한 각 feature의 기여도
계산 방식
트리 분할 기여도,
정보 이득
퍼뮤테이션 기반 등
Shappley value 기반,
모든 feature 조합 고려
상호작용 반영
제한적, 독립적 기여도 가정
feature 간 상호작용 및 의존성 반영
결과 일관성
모델과 데이터에 따라 변동 가능
이론적으로 공정하고 일관성 보장
(Consistency)
해석 수준
전역적(global) 중요도
전역 및 개별(local) 예측 해석 가능
계산 비용
상대적으로 낮음
계산량 많음, 특히 비트리 모델에서 느림
적용 모델
주로 트리 기반 모델
모든 모델 가능하나 트리 모델에서 최적
  • 기존 feature impotance는 모델이 학습 중에 feature를 얼마나 자주, 얼마나 잘 썼는지를 기반으로 중요도를 산출
    • 예를 들어, XGBoost의 feature_importances_ 는 Gini impurity 감소량을 합산
  • SHAP는 단순 중요도 순위뿐 아니라, 각 feature가 예측값을 어떻게 끌어올리거나 내렸는지까지 설명하므로 해석력이 훨씬 뛰어남

SHAP의 신뢰도와 한계

  • SHAP는 이론적으로 공정성, 일관성(Consistency) 가 보장되어 매우 신뢰할만함
    • feature가 모델에 더 큰 영향을 미치면 SHAP 값도 반드시 커짐
  • 다만, 계산량이 많아 대규모 데이터나 복잡한 딥러닝 모델에서는 계산 비용과 시간이 많이 든다.
  • SHAP는 모델과 데이터에 기반해 해석하므로, 이상치(outlier)나 노이즈에 민감할 수도 있음
    • 데이터 전처리와 모델 검증이 중요
  • SHAP 값은 인과관계를 의미하지 않고, 단지 예측에 대한 기여도임을 명확히 이해해야 함
    • 기존의 feature importance도 인과관계를 의미하지 않음
    • 상관관계 또는 예측적 중요도를 나타냄

      → 실제로 인과관계를 파악하려면 추가적인 인과 추론 기법(ex. A/B 테스트)가 필요

SHAP 사용이 권장되는 경우

  • 모델 예측의 투명성 확보가 필요한 경우 (의료, 금융, 법률 등)
  • 복잡한 모델(트리 앙상블, 딥러닝)의 내부 작동 원리를 해석할 때
  • 개별 샘플별 예측 이유를 설명해야 할 때
  • feature 간 상호작용과 의존성을 고려한 정밀한 중요도 분석이 필요할 때
  • 기존 feature importance가 불안정하거나 일관성이 떨어질 때

SHAP의 이상치, 노이즈 민감성과 데이터 전처리의 중요성

SHAP은 모델의 예측 결과를 각 feature 별로 분해해 설명하는 해석 기법

  • 모델과 데이터 자체에 기반해 계산되므로, 데이터 내의 이상치나 노이즈에 민감하게 반응할 수 있음
 

SHAP가 이상치, 노이즈에 민감한 이유

SHAP 값은 모델이 훈련된 데이터 분포를 바탕으로 각 feature의 기여도를 계산

→ 만약, 데이터에 이상치나 노이즈가 많으면, 모델이 이를 학습하면서 예측 경계가 왜곡되고, SHAP 값 역시 비정상적으로 산출될 수 있음

SHAP는 각 feature 조합에 대해 예측값의 변화를 계산하는데, 이상치가 포함된 샘플은 다른 특성의 SHAP 값에도 영향을 미칠 수 있음

 

SHAP 해석 과정과 결과물

SHAP 해석 과정

  1. 모델 학습
  1. SHAP 값 계산
      • 학습된 모델과 입력 데이터를 사용해 각 샘플, 각 feature 별로 SHAP 값을 계산
      • SHAP 값 : 해당 feature 가 예측값에 기여한 정도
      • 계산 방식은 모델 종류에 따라 TreeSHAP, KernelSHAP, DeepSHAP 등이 있음
 

SHAP의 주요 결과물

summary plot
각 feature의 SHAP 값 분포와 중요도를 한 눈에 보여주는 그래프
- dot plot과 bar plot 형태가 대표적
- dot plot: feature 별로 SHAP 값의 분포와 feature 값의 크기까지 시각화
- bar plot: feature 별 평균 SHAP 값의 절댓값을 막대로 나타냄
feature importance plot
SHAP 값의 절댓값 평균을 기반으로 변수 중요도를 나타냄
이는 모델의 전체 예측에서 어떤 feature가 가장 큰 영향을 미쳤는지 보여줌
dependence plot
특정 feature의 값이 변할 때 SHAP 값(기여도)이 어떻게 달라지는지 시각화
- feature와 target 간의 관계를 탐색할 때 유용
force plot
개별 예측에 대해 각 feature가 예측값을 얼마나 올리거나 내렸는지 시각적으로 보여줌
- local explanation(개별 샘플 해석)에 적합
decision plot
모델의 예측 과정에서 feature들이 어떻게 누적적으로 영향을 미쳤는지 보여줌
 

SHAP 결과 해석 방법

Global 해석
전체 데이터셋에서 어떤 feature 가 예측에 가장 큰 영향을 미쳤는지 파악
- summary plot, feature importance plot을 통해 확인 가능
Local 해석
개별 샘플에 대해 각 feature가 예측값에 미친 영향(양의 영향, 음의 영향) 을 파악
- force plot, decision plot 등을 활용
특정 feature의 영향 분석
dependence plot을 통해 feature 값이 커질수록 예측값이 어떻게 변하는지, 비선형 관계나 상호작용 탐색

XGBoost feature_importance_ 와 SHAP 결과가 다른 이유

XGBoost
feature_importance_
- 트리 모델이 학습 과정에서 각 feature를 split 에 사용한 빈도(weight ), 해당 split 이 줄인 손실(gain ), split 로 영향을 받은 샘플 수 (cover ) 등으로 중요도 계산
- 얼마나 자주, 얼마나 많이 split 에 기여했는지를 기준으로 전체적으로 순위를 매김
- feature가 예측값에 미치는 영향의 방향(음수/양수)나, 개별 예측에서의 기여도는 고려하지 않음
SHAP
- 각 feature가 개별 예측값에 얼마나 기여했는지(평균 예측값에서 얼마나 올리거나 내렸는지)를 계산
- 모든 feature 조합을 고려해, 해당 feature가 빠졌을 때와 포함됐을 때 예측값 차이를 반복적으로 측정해 평균을 냄
- SHAP 값은 방향성(양/음)과 크기 모두를 반영.

SHAP 해석 전 먼저 해야할 것

1. feature correlation
(상관관계)
변수 간의 상관관계 보기
- 다중공선성 확인
- SHAP 해석에서 유사한 변수들이 SHAP 값을 나눠 가질 수 잇음(중요도가 낮아 보일 수 있음)
2. feature distribution
(분포)
각 변수의 분포 확인
(히스토그램, KDE plot 등)
- 이상치 존재 여부 확인
- 데이터가 한쪽으로 치우쳐 있으면 SHAP 값도 왜곡 가능
- 이상치로 인한 SHAP 과대 해석 방지
3. feature improtance
모델 자체가 계산한 중요도
- SHAP 으로 넘어가기 전에 대략 어떤 feature가 중요한지 감 잡기

추천 글

BlogPro logo