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 importance | SHAP value |
해석 대상 | 모델 전체에서 feature 중요도 순위 | 개별 예측에 대한 각 feature의 기여도 |
계산 방식 | 트리 분할 기여도, 정보 이득 퍼뮤테이션 기반 등 | Shappley value 기반, 모든 feature 조합 고려 |
상호작용 반영 | 제한적, 독립적 기여도 가정 | feature 간 상호작용 및 의존성 반영 |
결과 일관성 | 모델과 데이터에 따라 변동 가능 | 이론적으로 공정하고 일관성 보장 (Consistency) |
해석 수준 | 전역적(global) 중요도 | 전역 및 개별(local) 예측 해석 가능 |
계산 비용 | 상대적으로 낮음 | 계산량 많음, 특히 비트리 모델에서 느림 |
적용 모델 | 주로 트리 기반 모델 | 모든 모델 가능하나 트리 모델에서 최적 |
- 기존 feature impotance는 모델이 학습 중에 feature를 얼마나 자주, 얼마나 잘 썼는지를 기반으로 중요도를 산출
- 예를 들어, XGBoost의
feature_importances_
는 Gini impurity 감소량을 합산
- 예를 들어, XGBoost의
- 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 해석 과정
- 모델 학습
- 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가 중요한지 감 잡기 |