검색
← 모듈 로드맵

모델 설명하기: 특징 중요도 · 순열 중요도 · 부분 의존 · LIME · SHAP

강의 · 준전문가 · KAITABASE 정리

원제 · Explaining Model Predictions: Permutation Importance, PDP, LIME, SHAP (Molnar, Interpretable Machine Learning 참고)

순열 중요도 · PDP · LIME · 섀플리 값을 손계산하고 SHAP의 원리와 함정을 익히는 수업

먼저 알아야 할 것

모델 평가 지표와 검증 데이터선형 회귀기댓값 · 평균트리 앙상블(선택)

다루는 내용

모델 내부를 보지 않고 바깥에서 설명하는 방법을 전역 · 지역으로 나눠 정리합니다. 순열 특징 중요도, 부분 의존 그림과 ICE, LIME의 지역 선형 근사, 특징 3개 예로 섀플리 값을 손계산하고 효율성 성질을 확인합니다. KernelSHAP과 TreeSHAP의 차이, 상관 특징과 인과 해석의 함정을 다룹니다.

해설

모델 설명하기: 특징 중요도 · 순열 중요도 · 부분 의존 · LIME · SHAP

잘 맞히는 모델도 "왜 그렇게 예측했나"를 말하지 못하면 믿고 쓰기 어렵습니다. 이 수업은 모델 안을 열지 않고 바깥에서 설명하는 대표 방법 다섯 가지(특징 중요도 · 순열 중요도 · 부분 의존 그림 · LIME · SHAP)를 손계산으로 익히고, 각 방법이 무엇을 말해 주고 무엇은 말해 주지 않는지 정리합니다.

항목내용
참고 출처Christoph Molnar, 『Interpretable Machine Learning』 3판 (SHAP · 순열 중요도 · PDP · LIME 장), LIME · SHAP 원 논문
트랙 · 수준해석 가능성 · 중급
이 수업이 다루는 범위전역 · 지역 설명, 순열 특징 중요도, 부분 의존 그림(PDP)과 ICE, LIME, 섀플리 값, SHAP(KernelSHAP · TreeSHAP), 상관 특징과 인과의 함정

들어가기 전에

한눈에 보기

  • 전역 설명(모델 전체가 무엇에 기대나)과 지역 설명(이 예측 하나는 왜 이렇게 나왔나)을 구분합니다.
  • 순열 중요도를 "특징 하나를 섞으면 오차가 얼마나 커지나"로 계산합니다.
  • 부분 의존 그림이 평균을 내면서 숨기는 것을 압니다.
  • LIME이 예측 하나 주변에 간단한 선형 모델을 맞추는 원리를 압니다.
  • 특징 3개짜리 예로 섀플리 값을 끝까지 손계산하고, 기여의 합이 "예측 − 평균 예측"과 같아지는 것을 확인합니다.

1. 전역 설명과 지역 설명

직관(해설용 비유). 한 회사의 "연봉을 정하는 데 가장 중요한 요소는 경력"이라는 말은 전역 설명입니다. "김 대리의 올해 연봉이 평균보다 400만 원 높은 이유는 자격증 +250, 경력 +150"이라는 말은 지역 설명입니다. 둘은 답하는 질문이 다릅니다.

방법범위질문
모델 내장 중요도(트리 분할 이득 등)전역학습 중 어떤 특징을 많이 썼나
순열 특징 중요도전역이 특징을 망가뜨리면 성능이 얼마나 떨어지나
부분 의존 그림(PDP)전역이 특징 값이 바뀌면 평균 예측이 어떻게 변하나
LIME지역이 예측 근처에서 모델을 선형으로 흉내 내면
SHAP지역(모으면 전역)이 예측을 평균에서 얼마나 밀어 올렸나, 특징별로

여기 나오는 방법은 모두 모델 불가지론적(model-agnostic) 입니다. 모델 안의 가중치를 보지 않고 "입력을 바꿔 넣고 출력을 관찰"만 하므로 어떤 모델에도 쓸 수 있습니다(TreeSHAP은 예외로 트리 구조를 씁니다).

2. 순열 특징 중요도

직관. 시험에서 학생 답안의 한 문항만 다른 학생 것과 무작위로 바꿔치기했더니 점수가 크게 떨어졌다면, 그 문항이 점수에 중요했던 것입니다. 특징 열 하나를 행끼리 뒤섞으면 그 특징과 정답의 관계만 끊어집니다.

단계. Molnar 책은 Fisher · Rudin · Dominici(2019)의 모델 불가지론 판을 이렇게 정리합니다. 이 방식은 Breiman(2001)이 랜덤 포레스트용으로 처음 제안했습니다.

  1. 원래 데이터로 오차 eorige_{\text{orig}} 를 잽니다(예: 평균 제곱 오차).
  2. 특징 jj 열만 무작위로 섞은 데이터로 오차 eperm,je_{\text{perm},j} 를 잽니다.
  3. 중요도를 비율 또는 차이로 구합니다.
FIj=eperm,jeorig또는FIj=eperm,j−eorigFI_j = \frac{e_{\text{perm},j}}{e_{\text{orig}}} \quad\text{또는}\quad FI_j = e_{\text{perm},j} - e_{\text{orig}}
기호뜻
eorige_{\text{orig}}섞기 전 오차
eperm,je_{\text{perm},j}특징 jj 를 섞은 뒤 오차
FIjFI_j특징 jj 의 중요도. 비율이 1이면 "섞어도 그대로" = 안 쓰는 특징

정확도 · AUC처럼 클수록 좋은 지표라면 두 값의 자리를 바꿉니다.

숫자로 해 보기(해설용). 집값 모델의 검증 MSE가 4.0입니다. '면적'을 섞으니 25.0, '층수'를 섞으니 4.4가 되었습니다.

  • 면적: 비율 25.0/4.0=6.2525.0/4.0 = 6.25, 차이 21.021.0
  • 층수: 비율 4.4/4.0=1.14.4/4.0 = 1.1, 차이 0.40.4

모델은 면적에 크게 기대고 층수는 거의 쓰지 않습니다.

주의할 점.

  • 검증 데이터로 잽니다. 학습 데이터로 재면 과적합한 모델이 쓸모없는 특징까지 중요하게 보이게 할 수 있습니다.
  • 섞는 데 무작위가 들어갑니다. 여러 번 섞어 평균을 냅니다.
  • 상관된 특징. '면적'과 '방 개수'처럼 강하게 상관된 특징 중 하나만 섞으면 "면적 200㎡에 방 1개" 같은 비현실적 행이 생깁니다. 또 비슷한 특징이 둘 있으면 중요도가 둘로 쪼개져 각각 덜 중요해 보입니다.
  • 얼마나 중요한지는 알려 주지만 어느 방향으로 영향을 주는지는 알려 주지 않습니다.

3. 부분 의존 그림(PDP)과 ICE

직관. "다른 조건은 각자 그대로 두고, 모든 집의 면적만 100㎡로 바꿔 놓으면 평균 예측가는?"을 면적 값마다 계산해 이은 선입니다. Friedman(2001)이 그래디언트 부스팅 논문에서 소개했습니다.

f^S(xS)≈1n∑i=1nf^(xS, xC(i))\hat f_S(x_S) \approx \frac{1}{n}\sum_{i=1}^{n} \hat f\big(x_S,\ x_C^{(i)}\big)
기호뜻
xSx_S관심 있는 특징(들)의 값. 이 값으로 고정합니다
xC(i)x_C^{(i)}ii 번째 데이터의 나머지 특징 실제 값
f^\hat f학습된 모델
f^S(xS)\hat f_S(x_S)xSx_S 일 때의 평균 예측

숫자로 해 보기(해설용). 데이터 3건, 모델 f^(x1,x2)=2x1+x1x2\hat f(x_1,x_2) = 2x_1 + x_1x_2 라고 합시다. 나머지 특징 x2x_2 의 실제 값이 (−1,0,1)(-1, 0, 1) 입니다. x1=1x_1=1 로 고정하면 예측은 2−1=12-1=1, 2+0=22+0=2, 2+1=32+1=3 → 평균 22. x1=2x_1=2 면 2,4,62, 4, 6 → 평균 44.

PDP는 "x1x_1 이 1 늘면 예측이 2 늘어난다"는 직선을 그립니다. 하지만 개별 곡선(ICE, Individual Conditional Expectation)을 그려 보면 기울기가 집마다 1,2,31, 2, 3 으로 다릅니다. PDP는 평균이라 집단별로 다른 효과를 감춥니다. 극단적으로 절반은 +, 절반은 − 효과면 PDP는 평평해져 "효과 없음"처럼 보입니다. 그래서 ICE 곡선을 함께 봅니다.

PDP도 순열 중요도처럼 특징들이 서로 독립이라고 가정합니다. 상관된 특징이 있으면 평균을 낼 때 실제로는 없는 조합을 섞습니다.

4. LIME: 예측 하나 주변을 선형으로 흉내 내기

직관(해설용 비유). 지구는 둥글지만 내 집 마당은 평평한 바닥처럼 다뤄도 됩니다. 복잡한 모델도 한 점 바로 근처 에서는 직선(선형 모델)으로 꽤 잘 근사됩니다. LIME(Local Interpretable Model-agnostic Explanations)은 Ribeiro · Singh · Guestrin이 2016년(KDD 2016) 발표했습니다.

단계.

  1. 설명할 데이터 xx 를 고릅니다.
  2. xx 주변에 일부 특징을 흔든 가짜 샘플 zz 를 많이 만들고, 블랙박스 모델의 예측을 받습니다.
  3. xx 에 가까운 샘플일수록 큰 가중치 πx(z)\pi_x(z) 를 줍니다.
  4. 가중치를 준 데이터로 단순한 모델 gg(특징 몇 개짜리 선형 모델 등)를 맞춥니다.
  5. gg 의 계수를 설명으로 읽습니다.
ξ(x)=arg⁡min⁡g∈G L(f,g,πx)+Ω(g)\xi(x) = \arg\min_{g\in G}\ \mathcal L(f, g, \pi_x) + \Omega(g)
기호뜻
ff설명하려는 블랙박스 모델
g∈Gg\in G해석할 수 있는 단순 모델(예: 희소 선형 모델)
πx\pi_xxx 와의 가까움을 재는 가중치
L\mathcal L가까운 곳에서 gg 가 ff 를 얼마나 못 흉내 내는지(가중 오차)
Ω(g)\Omega(g)gg 의 복잡도(특징 개수 등). 작을수록 사람이 읽기 쉬움

원 논문은 가중치로 지수 커널 πx(z)=exp⁡(−D(x,z)2/σ2)\pi_x(z)=\exp(-D(x,z)^2/\sigma^2) 를 씁니다(DD 는 거리, σ\sigma 는 폭).

숫자로 해 보기(해설용). σ=1\sigma=1 일 때 거리 0.5인 샘플의 가중치는 e−0.25≈0.78e^{-0.25}\approx0.78, 거리 2인 샘플은 e−4≈0.018e^{-4}\approx0.018 입니다. 먼 샘플은 거의 무시됩니다. 폭 σ\sigma 를 2로 키우면 거리 2인 샘플도 e−1≈0.37e^{-1}\approx0.37 이 되어 "주변"이 넓어집니다.

주의할 점. Molnar 책은 커널 폭을 정하는 좋은 방법이 없고, 폭을 바꾸면 설명(부호까지)이 달라질 수 있으며, 아주 가까운 두 점의 설명이 크게 다르거나 샘플링을 다시 하면 결과가 바뀌는 불안정성 을 지적합니다.

5. 섀플리 값: 협력 게임에서 공을 나누는 법

직관. 세 사람이 함께 일해 80만 원을 더 벌었습니다. 누가 얼마를 가져가야 공정할까요? 섀플리 값(Shapley value)은 "모든 가능한 합류 순서를 고르게 따져, 각자가 들어왔을 때 늘어난 몫을 평균"합니다. 게임 이론가 섀플리(1953)의 아이디어로, 모델 설명에서는 사람 = 특징, 상금 = 예측 입니다.

단계.

  1. 특징 부분집합 SS 마다 "그 특징만 알 때의 예측" v(S)v(S) 를 정합니다. 아무것도 모를 때 v(∅)v(\varnothing) 는 평균 예측입니다.
  2. 특징 ii 가 빠진 모든 SS 에 대해 한계 기여 v(S∪{i})−v(S)v(S\cup\{i\}) - v(S) 를 구합니다.
  3. 합류 순서의 경우의 수에 맞는 가중치로 평균합니다.
ϕi=∑S⊆N∖{i}∣S∣! (M−∣S∣−1)!M![v(S∪{i})−v(S)]\phi_i = \sum_{S\subseteq N\setminus\{i\}} \frac{|S|!\,(M-|S|-1)!}{M!}\Big[v(S\cup\{i\}) - v(S)\Big]
기호뜻
NN, MM특징 전체 집합과 그 개수
SSii 를 뺀 특징 부분집합
v(S)v(S)SS 의 특징 값만 알 때의 (기대) 예측
분수 가중치순서 M!M! 가지 중 "앞에 SS 가 먼저 오고 그다음 ii" 인 순서의 비율
ϕi\phi_i특징 ii 의 섀플리 값(기여)

숫자로 해 보기(해설용, 파이썬으로 검산). 집값 예측(단위: 백만 원). 특징은 ①면적 ②역 거리 ③층수. 각 부분집합의 예측이 다음과 같다고 합시다.

SS∅\varnothing{1}{2}{3}{1,2}{1,3}{2,3}{1,2,3}
v(S)v(S)300340320310370345330380

M=3M=3 이면 가중치는 ∣S∣=0|S|=0 일 때 0! 2!3!=13\tfrac{0!\,2!}{3!}=\tfrac13, ∣S∣=1|S|=1 일 때 1! 1!3!=16\tfrac{1!\,1!}{3!}=\tfrac16, ∣S∣=2|S|=2 일 때 13\tfrac13 입니다.

  • 면적: 13(340−300)+16(370−320)+16(345−310)+13(380−330)=403+506+356+503≈44.17\tfrac13(340-300) + \tfrac16(370-320) + \tfrac16(345-310) + \tfrac13(380-330) = \tfrac{40}{3}+\tfrac{50}{6}+\tfrac{35}{6}+\tfrac{50}{3} \approx 44.17
  • 역 거리: 13(20)+16(30)+16(20)+13(35)≈26.67\tfrac13(20) + \tfrac16(30) + \tfrac16(20) + \tfrac13(35) \approx 26.67
  • 층수: 13(10)+16(5)+16(10)+13(10)≈9.17\tfrac13(10) + \tfrac16(5) + \tfrac16(10) + \tfrac13(10) \approx 9.17

합은 44.17+26.67+9.17=80=380−30044.17+26.67+9.17 = 80 = 380 - 300 입니다. 이것이 효율성(efficiency) 성질입니다. 기여를 다 더하면 "이 집의 예측 − 평균 예측"이 정확히 나옵니다. 3! = 6가지 합류 순서를 일일이 따져 평균해도 같은 값이 나옵니다.

왜 이렇게 하나. "다른 특징을 다 고정하고 하나만 뺐을 때의 차이"만 보면 상호작용 몫을 누가 가질지가 순서에 따라 달라집니다. 위 예에서 면적과 역 거리가 함께 있으면 더 올라가는 몫이 있습니다. 모든 순서를 평균하면 이 몫을 공정하게 나눕니다. 섀플리 값은 효율성 · 대칭성 · 더미(안 쓰면 0) · 가산성을 동시에 만족하는 유일한 분배 방식이라는 것이 게임 이론의 결과입니다.

6. SHAP: 섀플리 값을 빠르게 계산하기

특징이 MM 개면 부분집합이 2M2^M 개라 정확한 계산은 금방 불가능해집니다. Lundberg · Lee(2017, NIPS 2017)는 LIME · DeepLIFT 등 여러 방법을 "가산적 특징 귀속"이라는 한 틀로 묶고, 섀플리 값을 근사하는 SHAP(SHapley Additive exPlanations)을 제안했습니다.

g(z′)=ϕ0+∑i=1Mϕizi′g(z') = \phi_0 + \sum_{i=1}^{M}\phi_i z'_i
기호뜻
zi′∈{0,1}z'_i\in\{0,1\}특징 ii 가 "있음(1) · 없음(0)"
ϕ0\phi_0기준값(평균 예측)
ϕi\phi_i특징 ii 의 SHAP 값

Molnar 책이 정리한 세 성질은 지역 정확성(모든 특징이 있을 때 gg 가 원래 예측과 같음 = 효율성), 결측성(없는 특징은 0), 일관성(모델이 바뀌어 어떤 특징의 한계 기여가 늘거나 같으면 SHAP 값도 줄지 않음)입니다.

KernelSHAP vs TreeSHAP.

KernelSHAPTreeSHAP
대상아무 모델결정 트리 · 랜덤 포레스트 · 부스팅 트리
방법부분집합을 샘플링하고, 특별한 커널 가중치로 가중 선형 회귀를 풀어 계수를 SHAP 값으로트리 구조를 따라 계산
비용느림(샘플이 많이 필요)Molnar 책 기준 O(TL2M)O(TL2^M) 을 O(TLD2)O(TLD^2) 로 줄임(TT 트리 수, LL 최대 잎 수, DD 최대 깊이)

KernelSHAP의 커널은 π(z′)=M−1(M∣z′∣) ∣z′∣ (M−∣z′∣)\pi(z') = \dfrac{M-1}{\binom{M}{|z'|}\,|z'|\,(M-|z'|)} 로, 특징이 아주 적거나 아주 많은 부분집합에 큰 가중치를 줍니다. 같은 커널을 LIME에 쓰면 LIME도 섀플리 값을 추정하게 됩니다. Molnar 책은 KernelSHAP이 느려 shap 패키지에서 더 이상 기본 방법이 아니라고 적습니다.

mermaid
flowchart LR
  A[학습된 모델 f] --> B{무엇을 묻나}
  B -->|모델 전체| C[순열 중요도<br/>오차 증가로 순위]
  B -->|특징 값의 효과| D[PDP + ICE<br/>평균과 개별 곡선]
  B -->|예측 하나| E{모델 종류}
  E -->|트리 앙상블| F[TreeSHAP]
  E -->|아무 모델| G[KernelSHAP · LIME]
  F --> H[기여 합 = 예측 − 평균]
  G --> H
  C --> I[해석 · 검증 · 보고]
  D --> I
  H --> I

7. 설명을 읽을 때의 함정

  • 설명 ≠ 인과. SHAP 값이 크다는 것은 "모델이 그 특징에 기댔다"는 뜻이지 "현실에서 그 특징을 바꾸면 결과가 바뀐다"는 뜻이 아닙니다. 아이스크림 판매량으로 익사 사고를 예측하는 모델은 여름이라는 공통 원인을 따라갈 뿐입니다.
  • 상관 특징. KernelSHAP은 특징이 독립이라 보고 주변 분포에서 값을 뽑으므로 비현실적인 조합에 무게를 둘 수 있습니다. 반대로 조건부 분포를 쓰면 모델이 실제로 쓰지 않는 특징도 0이 아닌 값을 받을 수 있습니다(Molnar 책이 Sundararajan · Najmi 2020, Janzing 외 2020을 들어 설명). 어느 쪽을 썼는지 밝혀야 합니다.
  • 기준값. ϕ0\phi_0 을 어떤 데이터의 평균으로 잡았는지에 따라 값이 달라집니다.
  • 설명도 검증합니다. 일부러 넣은 무작위 특징이 상위에 오르면 설명이나 모델 중 하나를 의심합니다.

연습 문제

  1. 정확도 0.90인 분류기에서 특징 A를 섞으니 0.72, B를 섞으니 0.89가 되었습니다. 차이 방식 중요도는?
    • 풀이: 클수록 좋은 지표이므로 eorig−eperme_{\text{orig}} - e_{\text{perm}} 로 바꿔 씁니다. A =0.18=0.18, B =0.01=0.01 입니다.
  2. 본문 섀플리 표에서 v({1,2,3})v(\{1,2,3\}) 이 380이 아니라 400이고 나머지는 같다면 면적의 섀플리 값은?
    • 풀이: ∣S∣=2|S|=2 항만 13(400−330)\tfrac13(400-330) 으로 바뀝니다. 403+506+356+703≈50.83\tfrac{40}{3}+\tfrac{50}{6}+\tfrac{35}{6}+\tfrac{70}{3}\approx50.83 입니다.
  3. 특징이 10개일 때 정확한 섀플리 계산에 필요한 부분집합 수는?
    • 풀이: 210=1,0242^{10}=1{,}024 개입니다. 특징 30개면 약 10억 개(230≈1.07×1092^{30}\approx1.07\times10^9)라 근사가 필요합니다.
  4. LIME에서 σ=1\sigma=1, 거리 1인 샘플의 가중치는?
    • 풀이: e−1≈0.368e^{-1}\approx0.368 입니다.

스스로 점검

  1. 순열 중요도를 학습 데이터로 재면 어떤 문제가 생기나요?
    • 답: 과적합한 모델은 학습 데이터의 잡음까지 외워, 실제로는 쓸모없는 특징을 섞어도 학습 오차가 크게 늘어 중요해 보일 수 있습니다. 검증 데이터로 잽니다.
  2. SHAP 값을 모두 더하면 무엇이 되나요?
    • 답: 그 데이터의 예측값에서 기준값(평균 예측)을 뺀 값입니다(지역 정확성 · 효율성).
  3. "SHAP에서 '나이'의 기여가 크니 나이를 바꾸면 결과가 바뀐다"는 말은 왜 위험한가요?
    • 답: SHAP은 모델이 무엇에 기댔는지를 보여 줄 뿐 인과 관계를 보여 주지 않습니다. 나이와 상관된 다른 요인의 효과를 대신 짊어졌을 수 있습니다.

용어 정리

용어쉬운 뜻
전역 설명모델 전체가 무엇에 기대는지 설명
지역 설명예측 하나가 왜 그렇게 나왔는지 설명
모델 불가지론적모델 내부를 보지 않고 입력 · 출력만으로 설명하는 성질
순열 특징 중요도특징 하나를 섞었을 때 오차가 늘어난 정도
부분 의존 그림(PDP)특징 값을 바꿔 가며 본 평균 예측 곡선
ICE데이터 한 건마다 그린 부분 의존 곡선
LIME예측 하나 주변에서 단순 모델로 흉내 내는 설명
섀플리 값모든 합류 순서를 평균해 기여를 공정하게 나눈 값
SHAP섀플리 값을 가산적 설명 모델로 근사 · 계산하는 틀
효율성(지역 정확성)기여의 합 = 예측 − 기준값

더 깊이 보려면

  • Molnar 책 17장(섀플리 값) · 18장(SHAP) · 14장(LIME) · 19장(PDP) · 23장(순열 중요도)
  • Ribeiro 외, "Why Should I Trust You?" (arXiv 1602.04938)
  • Lundberg · Lee, A Unified Approach to Interpreting Model Predictions (arXiv 1705.07874)

다음에 볼 것

라이선스

본문은 KAITABASE 자체 해설입니다. 참고 자료 『Interpretable Machine Learning』(Christoph Molnar)은 CC BY-NC-SA 4.0으로 공개되어 있습니다. 집값 · 연봉 숫자와 모델은 이 수업을 위해 만든 해설용 예이며, 섀플리 계산은 파이썬으로 검산했습니다.

출처

AI 원리부터 이해하기 · 해석 가능성 모듈

해석 가능성 모듈 학습

이 글은 해석 가능성 모듈의 학습 자료입니다. 전체 2개 자료 중 1번째입니다.

AI 기초 과정은 현재 진도 저장을 지원하지 않습니다.

출처·원문

원문 보기

요약만

본문 자체 작성 · 참고 자료 Interpretable Machine Learning(CC BY-NC-SA 4.0)