sol’s blog

SHAP(Shapley Additive exPlanations)

sol-commits
sol-commitsMay 16, 2025
SHAP(Shapley Additive exPlanations)

    SAHP Value의 원리

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

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

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

    • 특정 feature 가 없을 때와 있을 때 모델 예측 차이를 여러 feature 조합에 대해 평균내어 산출
    • 각 샘플별로 각 feature 가 예측에 미친 영향을 수치화
      • 양수 → 예측값을 증가
      • 음수 → 예측값을 감소

      → 각 feature의 SHAP 값 절댓값 평균을 내어 global feature 중요도를 얻음

    SHAP 사용 목적과 장점

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

    기존 Feature Importance와 SHAP의 차이점

    구분기존 feature importanceSHAP 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 plotSHAP 값의 절댓값 평균을 기반으로 변수 중요도를 나타냄
    이는 모델의 전체 예측에서 어떤 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가 중요한지 감 잡기