대부분의 머신러닝 모델들은 예측성능은 좋아도, 블랙박스 모델의 특성으로 해석이 어렵다. 즉, 어떤 변수가 어떻게 예측에 기여했는지 알기 어렵다. 하지만 의학연구에서는 이 해석이 중요하고, 인과관계를 밝히는 연구에서는 이 해석이 전부라고 보아도 과언이 아니다. 따라서 블랙박스 모델의 특성상 의학연구에서 머신러닝은 모델은 아무리 성능이 좋아도 그 적용이 어렵다. 하지만 머신러닝 모델해석방법이 몇가지 있는데, 이번엔 머신러닝 모델의 예측을 해석하는 표준 방법인 SHAP (SHapley Additive exPlanations) 를 정리한다.
1. SHAP이란?
SHAP 은 각 예측에 대해 각 변수가 얼마나 기여했는지 정량화하는 방법이다.
원논문은 Lundberg & Lee, "A Unified Approach to Interpreting Model Predictions", NeurIPS 2017 으로 포스팅날짜 기준으로 6만회에 가까운 인용수를 가진다.
A Unified Approach to Interpreting Model Predictions
Understanding why a model makes a certain prediction can be as crucial as the prediction's accuracy in many applications. However, the highest accuracy for large modern datasets is often achieved by complex models that even experts struggle to interpret, s
arxiv.org
SHAP은 협력게임 이론(cooperative game theory) 의 Shapley value 에 기반한다.

Shapley value 의 원래 의미 :
여러 명이 협력해서 얻은 결과를 — 각자의 기여도에 따라 공정하게 분배 하는 방법
원논문은 Lloyd Shapley, "A value for n-person games", 1953 으로 Lloyd Shapley는 이 업적과 안정 매칭 이론 (Gale-Shapley 알고리즘) 등으로 2012년 노벨 경제학상 을 수상했다. (Alvin E. Roth 와 공동 수상)
머신러닝에 적용하면 :
- 참여자 = 입력 변수들
- 게임의 결과 = 모델의 예측
- 각자의 기여도 = SHAP value
즉 각 변수가 예측에 얼마나 기여했는지 를 — 공정하게 분배 한 값이다.
수식 — Shapley Value의 정의
φᵢ = Σ_{S ⊆ N\{i}} [ |S|! · (|N|−|S|−1)! / |N|! ] · [ f(S∪{i}) − f(S) ]
- 변수 i를 포함시킬 때 예측이 얼마나 변하는지 (f(S∪{i}) − f(S))
- 가능한 모든 변수 조합(S)에 대해 평균
- 가중치는 조합의 크기에 따라 결정
가장 큰 계산 부담 이 여기서 발생한다 — 변수가 n개면 2ⁿ개의 조합 을 봐야 한다.
2. Shapley Value의 수학적 기초 — 4가지 공리
2-1. Shapley의 4가지 공리 (1953)
Shapley는 원논문에서 "공정한 분배" 의 의미를 4가지 공리로 형식화 했다.
| 공리 | 의미 | 머신러닝 해석 |
| Efficiency (효율성) | 모든 기여도의 합 = 전체 결과 | 모든 SHAP value 합 + 기준값 = 최종 예측 |
| Symmetry (대칭성) | 같은 기여를 한 참여자는 같은 값을 받음 | 같은 영향을 주는 변수는 같은 SHAP value |
| Dummy (더미) | 기여 없는 참여자의 값은 0 | 영향 없는 변수의 SHAP value는 0 |
| Additivity (가법성) | 두 게임을 합치면 Shapley value도 합쳐짐 | 모델 결합 시 SHAP value도 선형적으로 합쳐짐 |
2-2. Shapley의 유일성 정리
Shapley는 이 4가지 공리를 모두 만족하는 유일한 분배법 이 — Shapley value 라는 것을 증명했다.
"공정함"의 직관을 수학적 공리로 정의 → 그 정의를 만족하는 유일한 해를 발견
이것이 Shapley value 가 반세기 동안 협력게임 이론의 표준이 된 이유이며, 다른 방법들에 비해서 우위에 설 수 있는 이유이다.
2-3. 머신러닝의 맥락에서 — Lundberg & Lee (2017)
Lundberg & Lee 는 Shapley의 4가지 공리를 머신러닝 맥락에 맞춰 3가지 속성 으로 재정리했다 :
- Local Accuracy (≈ Shapley의 Efficiency) — 기준값 + 각 변수의 SHAP value 합 = 예측
- Missingness — 입력에 없는 변수는 SHAP value가 0
- Consistency — 모델이 어떤 변수의 영향을 더 받도록 바뀌면 그 변수의 SHAP value도 같이 증가
그리고 이 3가지를 모두 만족하는 유일한 방법 이 — Shapley value를 기반으로 한 SHAP 임을 증명했다.
3. SHAP의 3가지 주요 변형

3-1. KernelSHAP — Model-Agnostic
- 어떤 모델에도 적용 가능 (블랙박스 포함)
- 가중 선형회귀 로 Shapley value 근사
- 단점 — 계산이 느림 (모델을 매우 많이 호출)
3-2. TreeSHAP — Tree 모델 전용
- Lundberg et al., 2020
- 결정트리, Random Forest, XGBoost, LightGBM 등에 사용
- 트리 구조를 직접 활용 해 정확한 Shapley value 계산
- 매우 빠르고 정확 — 현재 표준
3-3. DeepSHAP — Deep Learning 전용
- DeepLIFT 기반 (Shrikumar et al., 2017)
- 신경망 (MLP, CNN 등) 용
- 근사값 — 정확한 Shapley value는 아님
4. SHAP의 주요 시각화와 해석 방법
SHAP은 두 가지 핵심 시각화 를 제공한다 — 개별 환자용 (Waterfall) 과 전체 모델용 (Summary).
4-1. Waterfall Plot — 개별 환자 1명의 예측 해석

예시 — 환자 A의 재발 위험 75% 예측이 어떻게 만들어졌나?
- 기준값 E[f(X)] = 35% — 전체 환자의 평균 재발 예측. 모든 예측의 출발점.
- 각 변수의 기여도가 누적 되면서 최종 예측 75%에 도달.
| 변수 | 기여도 | 의미 |
| 병기 = T3 | +25% | T3 병기가 위험을 크게 높임 |
| 나이 = 65세 | +15% | 고령이 위험 증가 요인 |
| 종양크기 = 5cm | +12% | 큰 종양이 위험 증가 |
| 림프절 = 음성 | −8% | 림프절 음성이 위험 감소 |
| 수술 = 근치적 | −4% | 근치적 수술이 위험 감소 |
해석 방법
- 빨간색 막대 = 예측을 높이는 변수 (재발 위험 증가)
- 파란색 막대 = 예측을 낮추는 변수 (재발 위험 감소)
- 막대 길이 = 영향의 크기 — 길수록 큰 영향
- 위에서부터 정렬 — 영향이 큰 변수가 위에
- 합산 공식 — 기준값 + 모든 기여도 합 = 최종 예측 (수학적으로 정확)
35% + (+25 +15 +12 −8 −4) = 75%
임상적 활용 : 이 환자에게는 "T3 병기가 가장 큰 위험 요인이고, 고령도 영향이 크다. 다만 림프절 음성이 위험을 약간 낮춰주고 있다" 처럼 환자별 맞춤 설명 이 가능하다.
4-2. Summary Plot (Beeswarm) — 전체 모델의 변수 영향

모델 전체에서 어떤 변수가 가장 중요하고, 어떤 방향으로 작용하는가?
이 그래프는 전체 데이터셋의 모든 환자 에 대해 SHAP value 를 한꺼번에 표시한다.
해석 방법
- Y축 (변수 순서) — 위에서부터 전체 중요도 순 (가장 영향 큰 변수가 맨 위). 예시에서는 병기 > 나이 > 종양크기 > 림프절 > CEA > 성별.
- X축 (SHAP value)
- 우측 = 예측을 높임 (재발 위험 증가)
- 좌측 = 예측을 낮춤 (재발 위험 감소)
- 중앙선 (0) = 영향 없음
- 각 점 = 환자 1명 — 전체 데이터셋의 모든 환자 가 각자의 SHAP value 로 표시됨.
- 색상 = 변수 값의 크기
- 빨강 = 변수 값이 큼 (T 병기 높음, 나이 많음, 종양 큼 등)
- 파랑 = 변수 값이 작음
- 색상 + 위치로 방향 해석
- 예) 병기 라인 : 빨강 (큰 T 값) → 우측 (예측 ↑) / 파랑 (작은 T 값) → 좌측 (예측 ↓)
- 해석 : "T 병기가 클수록 재발 위험이 증가한다"
임상적 활용 : 이 그래프 하나로 :
- 어떤 변수가 가장 중요한가 (Y축 순서)
- 각 변수가 어떤 방향으로 영향을 주는가 (좌우 분포 + 색상)
- 전체 환자에서 변수의 영향이 얼마나 다양한가 (점들의 분포 폭)
이 모두를 한눈에 볼 수 있다. 논문에서 변수 중요도 발표 시 표준으로 쓰인다.
4-3. 그 외 시각화
- Force plot — Waterfall과 비슷하지만 수평 배치. 양·음 기여도를 좌우로 보여줌
- Dependence plot — 한 변수의 값에 따른 SHAP value 변화 표시. 비선형 효과 시각화에 유용
- Bar plot — 변수별 평균 |SHAP value| 를 막대로. 단순 중요도 순위 표시
5. 파이썬 코드
설치 : pip install shap
5-1. TreeSHAP — XGBoost 등 Tree 모델
import shap
import xgboost as xgb
# 모델 학습
model = xgb.XGBClassifier()
model.fit(X_train, y_train)
# SHAP 계산
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_test)
# 시각화
shap.summary_plot(shap_values, X_test) # Summary plot
shap.waterfall_plot(shap.Explanation( # Waterfall (환자 1명)
values=shap_values[0],
base_values=explainer.expected_value,
data=X_test.iloc[0]
))
shap.dependence_plot("age", shap_values, X_test) # Dependence plot
5-2. KernelSHAP — 모델 종류 무관
# 어떤 모델이든 가능 (블랙박스 포함)
explainer = shap.KernelExplainer(
model.predict,
shap.sample(X_train, 100) # 배경 데이터셋
)
shap_values = explainer.shap_values(X_test)
5-3. DeepSHAP — 신경망
explainer = shap.DeepExplainer(model, X_train[:100])
shap_values = explainer.shap_values(X_test)
6. 의학연구에서의 활용
SHAP은 의학연구 ML 논문에서 표준 해석 도구 로 자리잡았다.
- 변수 중요도 발표 — Summary plot으로 전체 모델 해석
- 개별 환자 설명 — Waterfall plot으로 왜 이 환자가 고위험인지 설명
- 비선형 효과 시각화 — Dependence plot으로 나이 vs 위험 같은 관계 표현
- 상호작용 발견 — 변수 조합의 효과 탐지
특히 XGBoost, Random Forest 같은 Tree 모델에서 — TreeSHAP의 빠르고 정확한 계산이 현대 의학연구의 표준 인터프리테이션 으로 자리잡았다.
7. SHAP의 장점
- 이론적 견고함 — Shapley value의 4가지 공리 + 수학적 유일성 보장 (Shapley 1953, Lundberg & Lee 2017)
- 모델 무관 + 모델 특화 모두 지원 — KernelSHAP은 어떤 모델도, TreeSHAP은 정확하고 빠름
- Local + Global 해석 모두 가능 — 개별 환자 + 전체 모델
- 일관성 — Consistency 속성 덕에 모델 비교 시 불공정한 해석 방지
- 표준 시각화 도구 — Waterfall, Summary, Dependence 등
8. SHAP의 한계
- 계산 비용 : 정확한 Shapley value는 변수 수에 따라 지수적으로 증가 한다. 변수가 10개를 넘으면 exact 계산이 거의 불가능 해진다. → KernelSHAP 같은 근사 방법 을 쓰지만, 근사 오차가 발생할 수 있고 여전히 느리다.
- 변수 독립 가정 : KernelSHAP의 기본 구현은 변수들이 서로 독립 이라고 가정한다. 실제 의학 데이터는 변수 간 강한 상관관계 가 많다 (예: 나이와 동반질환). → 상관관계 있는 변수들의 SHAP value 해석이 왜곡될 수 있다 (Aas et al., 2021).
- 인과성 아님 : SHAP value는 모델이 예측에 사용한 기여도 이지 실제 인과 효과가 아니다. → "SHAP value가 크다 = 임상적 인과 관계" 가 아님. 별도의 인과 추론이 필요하다.
- 모델 의존성 : SHAP은 학습된 모델을 설명 하는 도구이지 진실을 밝히는 도구 가 아니다. 모델이 잘못 학습되었다면 — SHAP도 잘못된 설명을 제공한다.
- 사람의 해석 오류 가능 : SHAP 시각화가 직관적 인 만큼 임상적 의미를 과도하게 부여 할 수 있다. 항상 전문가의 해석 과 함께 봐야 한다.
- 유의미성, 연관성의 정도가 아님 : 통계학에서는 p-value, 95% confidence interval 과 같이 유의미함을 제시하는 지표가 있지만, SHAP에는 없다. 또한, 회귀계수와 같이 age가 1 증가할때 사망위험도가 1.1 증가한다과 같은 설명이 불가능하고, 단지 얼마나 중요한 변수인지 상대적인 정도만 알 수 있다.
'의학 연구' 카테고리의 다른 글
| [비전공자의 머신러닝 의학연구 #12] 강화학습 (0) | 2026.07.03 |
|---|---|
| [비전공자의 머신러닝 의학연구 #11] 머신러닝을 위한 데이터 전처리 (0) | 2026.07.03 |
| [비전공자의 머신러닝 의학연구 #9] RNN과 LSTM — 시간 순서를 학습하는 신경망 (0) | 2026.07.03 |
| [비전공자의 머신러닝 의학연구 #8] DeepSurv — Cox 회귀 + 신경망 (1) | 2026.05.10 |
| [비전공자의 머신러닝 의학연구 #7] 딥러닝과 MLP (0) | 2026.05.08 |