티스토리 뷰

반응형

머신러닝 기초학습 7: 피처 중요도와 모델 해석 — 모델이 ‘왜 그렇게 예측했는가’를 이해하기


“이 모델은 왜 이 고객을 ‘이탈 가능성 높음’이라고 판단했을까?”

과거엔 ‘정확하면 됐지’였지만,
지금은 “왜 그런 예측을 내렸는가?” 가 더 중요해졌습니다.

바로 모델 해석(Explainability) 의 시대입니다.

이번 글에서는 머신러닝 모델의 의사결정 과정을 해석하고 시각화하는 기술들을
이론 + 실습 코드로 모두 정리합니다.


1. 왜 모델 해석이 중요한가?

머신러닝이 금융, 의료, 채용 등 인간의 결정을 대신하기 시작하면서,
모델이 내린 판단의 이유를 설명할 수 있어야 합니다.

설명 가능한 AI (Explainable AI, XAI) 는 다음 이유로 필수입니다:

  1. 신뢰성 (Trust) – 모델의 판단을 검증할 수 있어야 함
  2. 윤리성 (Fairness) – 특정 그룹에 불공정한 판단 방지
  3. 법적 규제 (Regulation) – EU AI Act, GDPR 등 “설명 의무” 강화
  4. 모델 개선 (Debugging) – 오작동 원인을 파악해 성능 향상

2. 피처 중요도 (Feature Importance)

“모델이 예측할 때 가장 영향을 많이 준 변수는 무엇인가?”

트리 기반 모델의 내장 기능

Random Forest, XGBoost, LightGBM 등은 학습 과정에서 자동으로 중요도를 계산합니다.
즉, 노드 분할 시 얼마나 손실(불순도)을 줄였는가로 피처의 영향력을 측정합니다.

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_breast_cancer
import pandas as pd

X, y = load_breast_cancer(return_X_y=True)
model = RandomForestClassifier(n_estimators=200, random_state=42)
model.fit(X, y)

importance = pd.Series(model.feature_importances_, index=load_breast_cancer().feature_names)
print(importance.sort_values(ascending=False).head(5))

결과 예시

worst perimeter    0.13
worst area         0.12
mean concave pts   0.10
mean radius        0.09
worst concavity    0.07

이 수치가 높을수록, 해당 피처가 모델의 결정에 큰 기여를 한 것입니다.


3. Permutation Importance (순열 중요도)

“피처의 값을 섞었을 때 성능이 얼마나 떨어지는가로 중요도를 판단.”

트리 기반 모델이 아니더라도 적용 가능하며, 모델 독립적(global) 인 방법입니다.

from sklearn.inspection import permutation_importance

result = permutation_importance(model, X, y, n_repeats=10, random_state=42)
sorted_idx = result.importances_mean.argsort()[-5:][::-1]
print("Top 5 중요 피처:")
for idx in sorted_idx:
    print(load_breast_cancer().feature_names[idx], "→", result.importances_mean[idx])

이 방법은 “모델이 그 피처를 얼마나 필요로 하는가”를 실험적으로 확인하는 방식입니다.


4. SHAP (SHapley Additive exPlanations)

반응형

“모든 피처가 예측 결과에 얼마만큼 기여했는지를 게임이론으로 계산.”

SHAP은 머신러닝 해석 도구 중 가장 강력한 프레임워크입니다.
각 피처의 기여도(contribution) 를 정량화하고,
그 합이 정확히 예측값을 재현하도록 보장합니다.

핵심 아이디어

  • 모든 피처가 ‘게임 참가자’
  • 예측값은 ‘게임 점수’
  • 각 피처가 점수에 기여한 정도를 계산 → SHAP 값
import shap
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X)

shap.summary_plot(shap_values[1], X, plot_type="bar")

이 그래프는 모델 전반에서 어떤 피처가 결과에 가장 큰 영향을 주었는지를 시각적으로 보여줍니다.

빨간색 → 예측값 증가 방향 / 파란색 → 감소 방향


5. LIME (Local Interpretable Model-Agnostic Explanations)

“특정 데이터 한 건에 대해, 근처의 단순한 모델로 근사해서 설명한다.”

SHAP이 전체(global) 관점이라면,
LIME은 개별(local) 관점에서 ‘이 예측은 왜 나왔는가’를 설명합니다.

예:

  • 어떤 고객을 ‘이탈 위험’으로 분류했을 때
  • “이 고객은 지난 3개월 사용량 감소, 고객센터 문의 증가 때문에 이탈로 예측됨”
import lime
import lime.lime_tabular
import numpy as np

explainer = lime.lime_tabular.LimeTabularExplainer(
    X,
    feature_names=load_breast_cancer().feature_names,
    class_names=['Benign', 'Malignant'],
    verbose=True, mode='classification'
)

i = np.random.randint(0, len(X))
exp = explainer.explain_instance(X[i], model.predict_proba, num_features=5)
exp.show_in_notebook(show_table=True)

6. Partial Dependence Plot (PDP)

“특정 피처가 변할 때 예측값이 어떻게 변하는지 시각화.”

PDP는 피처와 예측값 간의 관계 곡선을 보여줍니다.
다른 변수들은 평균으로 고정하고, 특정 피처만 변화시켜 모델 반응을 관찰합니다.

from sklearn.inspection import PartialDependenceDisplay
import matplotlib.pyplot as plt

PartialDependenceDisplay.from_estimator(model, X, [0, 1])  # 첫 두 피처
plt.show()

이 그래프를 보면,
예: “mean radius가 커질수록 악성 확률이 증가한다”
같은 인사이트를 직관적으로 얻을 수 있습니다.


7. SHAP vs LIME vs Feature Importance 비교

방법 설명 장점 단점

Feature Importance 전역적, 트리 모델 전용 빠름, 간단 해석이 제한적
Permutation Importance 모델 독립적 전역 해석 정확, 일반적 계산량 많음
SHAP 게임이론 기반 전역+국소 해석 정밀함, 수학적 근거 느림, 구현 복잡
LIME 개별 예측 설명 직관적, 시각화 용이 근사 모델 한계

8. 실제 비즈니스 예시

산업 모델 해석 포인트

금융 신용평가 모델 대출 금액, 연체 이력의 SHAP 값
의료 질병 예측 혈압, 콜레스테롤의 피처 영향도
리테일 고객 이탈 이용 빈도, 결제 주기의 LIME 분석
제조 불량 탐지 온도, 압력 변수의 PDP 시각화

모델 해석은 단순히 “예측 결과의 이유”를 찾는 것을 넘어,
도메인 지식과 모델을 연결하는 다리 역할을 합니다.


9. 해석 가능한 AI의 미래

Explainable AI(XAI)는 이제 선택이 아니라 필수입니다.
특히 법적 규제가 강화되면서,
“설명할 수 없는 AI”는 비즈니스에서 퇴출될 가능성이 높습니다.

다행히도 SHAP, LIME, PDP 같은 도구들이
우리에게 “AI의 사고방식”을 시각적으로 보여주는 시대가 왔습니다.


10. 정리

개념 요약

Feature Importance 어떤 피처가 중요한가
Permutation Importance 피처를 섞었을 때 성능 변화
SHAP 각 피처의 기여도 계산 (게임이론 기반)
LIME 개별 예측의 근거 설명
PDP 피처 변화에 따른 예측값 변동 시각화

📘 다음 글 예고

👉 머신러닝 기초학습 8: 모델 배포와 운영 (MLOps) — 학습된 모델을 실제 서비스로 연결하는 법

다음 글에서는
학습된 모델을 API 형태로 배포, 주기적으로 재학습,
로그 기반 모니터링을 통해 운영 환경에서 안정적으로 관리하는
“MLOps의 실전 구조”를 다룹니다.



머신러닝,AI기초,모델해석,피처중요도,SHAP,LIME,PDP,ExplainableAI,XAI,트리모델

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함
반응형