RF 사이토카인 SHAP 분석 #5 결과 분석 - SHAP Dot Plot #
#2026-03-04
#1
Random Forest 모델이 COVID-19 환자의 중증 여부를 예측한다. 166개의 사이토카인 수치를 입력으로 받아서 “이 환자는 중증이 될 것인가"를 판단한다. 모델이 잘 예측한다는 건 알겠는데, 왜 그런 예측을 내렸는지는 모른다. 어떤 사이토카인이 중요한 건지, 그 사이토카인이 높으면 중증인 건지 낮으면 중증인 건지, 이런 질문에 모델 자체는 답해주지 않는다.
SHAP Dot Plot은 이 세 가지 질문에 동시에 답한다. 어떤 사이토카인이 얼마나 중요한가, 어떤 방향으로 영향을 미치는가, 그리고 실제 발현량과 예측 방향이 어떻게 연결되는가를 하나의 그림에 담는다.
#
#2 SHAP 값: 게임 이론에서 온 공정한 기여도 분배
SHAP(Shapley Additive Explanations) 값을 이해하려면 먼저 공정한 기여도 분배라는 문제를 생각해야 한다.
네 명이 팀을 이뤄 축구 경기에서 5골을 넣었다. 각자의 기여도를 어떻게 공정하게 나눌까? 선수 A가 빠졌을 때 팀이 2골만 넣었다면 A의 기여는 3골이다. 하지만 이것만으로는 부족하다. A와 B가 함께 있을 때의 시너지, A와 C가 함께 있을 때의 시너지가 다르기 때문이다. Shapley 값은 모든 가능한 팀 조합에서 A가 추가되었을 때의 기여도를 계산하고, 그 평균을 A의 공정한 기여분으로 정한다. 이것이 게임 이론의 Shapley 값이다.
상황: 4명이 함께 축구 경기에서 5골을 넣었다.
각자의 기여도를 어떻게 공정하게 나눌까?
Shapley 방법:
- 선수 A가 없었다면? 2골
- 선수 A가 있으면? 5골
- → A의 기여: +3골
- 모든 가능한 조합에서 A의 영향을 평균낸다
- → Shapley 값 = A의 공정한 기여도
SHAP은 이 아이디어를 머신러닝에 적용한 것이다. 환자 X의 중증 확률을 모델이 0.73으로 예측했고, 전체 환자의 평균 예측값이 0.45라고 하자. 0.73과 0.45의 차이인 0.28을 166개 사이토카인에 공정하게 분배하는 것이 SHAP 분석이다.
상황: 환자 X의 중증 확률을 모델이 0.73으로 예측했다.
평균 예측값은 0.45다.
SHAP 분석:
- CD274가 없었다면(평균값 대체): 0.55 예측
- CD274가 있으면: 0.73 예측
- → CD274의 SHAP 값: +0.18 (중증 방향으로 기여)
- TNFSF10이 없었다면: 0.80 예측
- TNFSF10이 있으면: 0.73 예측
- → TNFSF10의 SHAP 값: -0.07 (중증 확률을 오히려 낮춤)
CD274가 없었다면(평균값으로 대체했다면) 예측이 0.55였을 거라면, CD274의 SHAP 값은 +0.18이다. CD274가 이 환자의 중증 예측을 0.18만큼 올렸다는 뜻이다. TNFSF10이 없었다면 예측이 0.80이었을 거라면, TNFSF10의 SHAP 값은 -0.07이다. TNFSF10이 오히려 중증 확률을 0.07만큼 낮췄다는 뜻이다. 모든 사이토카인의 SHAP 값을 합하면 그 환자의 예측값과 전체 평균의 차이와 정확히 일치한다. 0.18 + (-0.07) + 나머지 164개의 합 = 0.28이다. 기여도가 빠짐없이, 중복 없이 분배된다.
#
#3 SHAP 행렬: 549명 × 166개
이 분석에서 계산된 SHAP 행렬은 549행 166열이다. 549명의 환자 각각에 대해 166개 사이토카인의 SHAP 값이 계산되어 있다. 행렬의 (i, j) 셀은 “환자 i에서 사이토카인 j가 중증 예측에 얼마나 기여했는가"를 나타낸다.
CD274 KIT FLT3LG ... TNFSF10 (166개 사이토카인)
환자 1 +0.18 +0.12 -0.05 ... -0.07
환자 2 +0.03 -0.02 +0.09 ... +0.01
환자 3 +0.21 +0.15 -0.01 ... -0.12
...
환자 549 -0.04 -0.08 +0.03 ... -0.09
형태: (549개 샘플, 166개 사이토카인)
#
#4 Dot Plot의 세 차원
SHAP Dot Plot은 이 549×166 행렬의 정보를 하나의 그림에 압축한다. 그림에서 각 점이 하나의 환자에서의 하나의 사이토카인에 대한 SHAP 값이다. X축은 SHAP 값이다. 점이 오른쪽에 있으면 그 사이토카인이 그 환자에서 중증 확률을 높이는 방향으로 기여했고, 왼쪽에 있으면 중증 확률을 낮추는 방향으로 기여했다. 0에 있으면 기여가 없다.
Y축은 사이토카인의 종류다. 상위 20개가 중요도 순서로 나열되어 있다. 중요도는 각 사이토카인의 SHAP 값 절대값 평균으로 결정된다. 절대값의 평균이 크다는 건 양수든 음수든 그 사이토카인이 예측에 큰 영향을 미친다는 뜻이다.
점의 색깔이 세 번째 차원이다. 빨간 점은 그 환자에서 해당 사이토카인이 높게 발현된 것이고, 파란 점은 낮게 발현된 것이다. 이 색깔이 핵심이다. SHAP 값(X축)과 실제 발현량(색깔)의 관계를 보면 사이토카인이 어떤 방향으로 작용하는지가 드러나기 때문이다.
← SHAP 음수 (중증 확률↓) 0 SHAP 양수 (중증 확률↑) →
순위 사이토카인 발현낮음(파랑)──────────────────발현높음(빨강)
1 CD274 ○○○○○ ●●●●●●●●●●●●●●●●●
2 KIT ○○○○ ●●●●●●●●●●●●●●
3 FLT3LG ○○ ●●●●●●●●●●●●
4 GDF15 ○○○ ●●●●●●●●●●●
5 CXCL10 ○○○○ ●●●●●●●●●
6 PTX3 ○○ ●●●●●●●●
7 S100A12 ○ ●●●●●●●●
8 LGALS9 ○○ ●●●●●●●
9 ERBB2 ○○ ●●●●●●●
10 VCAM1 ○ ●●●●●●●
11 HGF ○○ ●●●●●
12 IL18 ○ ●●●●●
13 CHI3L1 ○ ●●●●
14 TNFSF10 ●●●●●●●● ←── ○○○○○○○○ ← 역방향!
15 MPO ●●●●●● ←── ○○○○○○
16 BDNF ○ ●●●●
17 ST2 ○ ●●●
18 MCP1 ○ ●●●
19 TIMP1 ○ ●●
20 VEGF ○ ●●
CD274 행을 보자. 빨간 점(발현 높음)들이 오른쪽(SHAP 양수)에 모여 있고, 파란 점(발현 낮음)들이 왼쪽(SHAP 음수)에 모여 있다. 이건 명쾌한 정방향 관계다. CD274가 높으면 중증 확률이 올라가고, CD274가 낮으면 중증 확률이 내려간다. CD274 발현량 자체가 중증도의 직접적인 지표라는 뜻이다.
상위 13개 사이토카인 대부분이 이 정방향 패턴을 보인다. KIT, FLT3LG, GDF15, CXCL10, PTX3 모두 발현이 높을수록 중증 방향으로 기여한다. 이 사이토카인들이 높다는 건 과도한 면역 활성화, 조직 손상, 염증 반응이 진행 중이라는 신호다.
그런데 14번째인 TNFSF10에서 패턴이 뒤집힌다. 빨간 점(발현 높음)이 왼쪽(SHAP 음수)에 있고, 파란 점(발현 낮음)이 오른쪽(SHAP 양수)에 있다. 정반대다. TNFSF10이 높으면 오히려 중증 확률이 내려가고, TNFSF10이 낮으면 중증 확률이 올라간다.
이것은 생물학적으로 의미가 있다. TNFSF10은 TRAIL이라고도 불리는데, 바이러스에 감염된 세포를 선천 면역이 제거하는 과정에서 중요한 역할을 한다. TNFSF10이 높다는 건 선천 면역이 정상적으로 작동하고 있다는 뜻이다. 반대로 TNFSF10이 낮다는 건 선천 면역이 약화되어 바이러스를 효과적으로 제거하지 못하고 있다는 뜻이다. 그래서 이 사이토카인의 부재 자체가 중증의 신호인 것이다. MPO도 같은 역방향 패턴을 보인다.
패턴 1: 빨강(고발현) 점이 오른쪽에 → 양방향 일관성 (정방향)
CD274: ○○○ ←──────── │ ──────────→ ●●●●●●●●●●●●
파랑(발현낮음) 0 빨강(발현높음)
해석: "CD274가 높을수록 → 중증 확률 증가"
"CD274가 낮을수록 → 중증 확률 감소"
결론: CD274 발현량이 중증도의 바이오마커
패턴 2: 빨강(고발현) 점이 왼쪽에 → 역방향 관계
TNFSF10: ●●●●● ←──── │ ────→ ○○○○○○○○○○
빨강 0 파랑
해석: "TNFSF10이 높으면 → 중증 확률 오히려 감소"
"TNFSF10이 낮으면 → 중증 확률 증가"
결론: TNFSF10 부재가 중증의 특징 (선천 면역 약화 신호)
**TNFSF10과 MPO가 역방향인 이유:**
- 대부분의 사이토카인: 높으면 → 중증 위험 증가
- TNFSF10(TRAIL): 선천 면역 정상 작동의 지표 → 낮으면 오히려 위험
- MPO: 회복 과정에서 높아지는 지표로 해석 가능
#
#5 상위 20개 사이토카인의 생물학적 의미
이전 BERT 프로젝트에서 혼동 행렬이 “Business와 Sci/Tech 사이에서 오분류가 집중된다"는 구체적 진단을 내려줬듯이, SHAP Dot Plot은 “어떤 사이토카인이 중증 예측에 어떻게 기여하는가"라는 구체적 진단을 내려준다.
단순히 “CD274가 중요하다"고만 말하면 의사가 할 수 있는 일이 별로 없다. 하지만 “CD274가 높을수록 중증 위험이 올라가고, TNFSF10이 낮을수록 중증 위험이 올라간다"고 말하면 구체적인 모니터링 전략이 나온다. CD274를 추적해서 올라가면 경고를 보내고, TNFSF10을 추적해서 떨어지면 경고를 보내는 시스템을 만들 수 있다.
더 깊이 들어가면, 상위 20개 사이토카인이 세 가지 생물학적 경로로 분류된다는 점도 중요하다. CD274, CXCL10, LGALS9, IL18은 면역 활성화와 염증 경로에 속한다. 과도한 면역 반응, 이른바 사이토카인 폭풍의 지표들이다. GDF15, PTX3, CHI3L1, ST2는 조직 손상과 스트레스 경로에 속한다. 폐와 내피 세포가 손상되고 있다는 신호다. KIT, FLT3LG, VCAM1은 선천 면역과 조혈 경로에 속한다. 면역 세포의 생산과 이동에 관여하는 지표들이다. 하나의 사이토카인이 높다고 중증이 되는 게 아니라, 여러 경로에서 동시에 이상이 생길 때 중증으로 진행된다는 것이 이 그림의 핵심 발견이다.
면역 활성화 & 염증 경로:
CD274 (PD-L1) → T세포 억제, 면역 회피
CXCL10 (IP-10) → 사이토카인 폭풍, T세포 모집
S100A12 → 호중구 활성화
LGALS9 → T세포 억제
IL18 → 염증성 사이토카인
조직 손상 & 스트레스:
GDF15 → 미토콘드리아 스트레스, 조직 손상
PTX3 → 급성기 반응, 내피 세포 손상
CHI3L1 → 조직 리모델링
ST2 → IL-33 수용체, 폐 손상
선천 면역 & 조혈 지표:
KIT → 줄기세포/비만세포 표지자
FLT3LG → 수지상세포 전구체
VCAM1 → 세포 부착, 내피 활성화
역방향 (낮을수록 위험):
TNFSF10 (TRAIL) → 감염 세포 제거 실패
MPO → 호중구 기능 마커
#
#6 정리: 이 그림으로 알수있는것
질문: 중증 COVID-19 환자와 일반 COVID-19 환자는 무엇이 다른가?
답:
1. CD274, CXCL10, GDF15, PTX3가 훨씬 높다 (빨간 점이 오른쪽)
→ 과도한 면역 활성화, 조직 손상
2. TNFSF10(TRAIL)이 훨씬 낮다 (파란 점이 왼쪽)
→ 선천 면역 약화, 바이러스 제거 실패
3. 이 패턴은 단일 사이토카인이 아닌
여러 경로의 동시 이상으로 이루어진다
#
#cf 다른 그림과의 연결
SHAP Dot Plot (이 그림)
↓ "어떤 사이토카인이 중요하고 어떤 방향인가?"를 답한다
SHAP Clustermap
↓ "이 패턴이 모든 샘플에서 일관되게 나타나는가?"를 확인
UMAP Scatter
↓ "SHAP 패턴이 비슷한 샘플들이 공간적으로 모이는가?"를 시각화
Volcano Plot
↓ "mDP→mRP와 sDP→sRP에서 각각 어떤 사이토카인이 통계적으로 다른가?"를 검증
ΔRank Bar Chart
↓ "TNFSF10, MPO처럼 중증도에 따라 중요도가 달라지는 것은?"을 정량화
Key Cytokine Boxplot
↓ "CXCL10, TNFSF10, GDF15, PTX3의 실제 분포를 PPG별로 확인"