SHAP·LIME·Counterfactual로 설계하는 설명 가능 AI 운영

SHAP, LIME, Counterfactual Explanations의 해석 방식과 운영 파이프라인, 신뢰도 검증 및 거버넌스 고려사항

2026-08-14 · 최초 발행 2024-04-29

예측값만으로는 설명이 끝나지 않는다

블랙박스 모델을 채택할수록 모델이 왜 특정 결과를 냈는지 설명하는 일이 운영의 일부가 된다. 규제 준수와 리스크 관리, 사용자 신뢰 확보에는 정량적·정성적 해석 도구를 함께 다루는 체계가 필요하다.

설명 가능 AI(Explainable AI, XAI)는 모델의 투명성·책임성·공정성을 뒷받침하는 기술과 방법론의 묶음이다. 모델 전체의 경향을 다루는 전역 설명과 개별 사례를 해석하는 지역 설명으로 나뉘며, 규제나 감사 상황에서는 지역 설명과 재현 가능한 절차가 특히 중요하다.

SHAP, LIME, Counterfactual Explanations는 이 요구를 서로 다른 방식으로 다룬다.

  • SHAP(SHapley Additive exPlanations)은 게임이론의 Shapley 값으로 특성 기여도를 추정한다. Additivity와 Consistency라는 이론적 성질을 보장하며, Kernel·Tree·Deep 등 모델 유형에 맞는 Explainer를 제공한다.
  • LIME(Local Interpretable Model-agnostic Explanations)은 입력 주변을 교란해 샘플을 만들고, 그 주변에서 대개 선형인 로컬 대리모델을 학습한다. 가중 회귀 계수로 설명을 제공하며 모델 불가지론적으로 적용할 수 있다.
  • Counterfactual Explanations는 결과를 바꾸려면 무엇을 최소한으로 바꿔야 하는지 대안 시나리오로 제시한다. 실행 가능성(Actionability), 인과 관계, 데이터 분포 적합성을 고려하는 제약 만족 최적화 문제다.

설명 방식이 달라지면 운영상의 선택도 달라진다

SHAP은 특성 부분집합별 기여도를 평균화해 공정한 분배를 계산한다. 트리 모델에서는 TreeExplainer를 통해 효율적으로 계산할 수 있다. 입력에서 배경분포를 추출하고 모델을 호출한 뒤 Shapley 값을 추정해 특성 기여도와 기대값을 산출한다. 일관성과 해석력은 높지만, 특성 수가 많거나 모델이 복잡하면 계산 비용이 커질 수 있다.

LIME은 국소 영역의 교란 샘플에 가중치를 부여하고 가벼운 대리모델을 맞춘다. 입력에서 교란 샘플을 생성하고 예측 확률을 수집한 뒤 로컬 회귀 또는 분류를 수행해 상위 특성의 기여 순위를 얻는다. 속도와 범용성이 장점이지만, 샘플링의 랜덤성 때문에 설명 안정성이 낮아질 수 있다. 샘플링 방식, 커널, 특성 표현을 관리해야 하는 이유다.

Counterfactual은 결과 반전이라는 목적함수, 변경을 최소화하는 비용, 실행 가능성·법규를 반영하는 제약을 하나의 최적화 문제로 합친다. 목표 결과를 지정한 뒤 탐색과 최적화를 거쳐 행동 가능성과 현실성을 검증하고 대안 사례를 반환한다. 실행 가능한 통찰을 주지만 인과 관계를 위반하거나 불공정을 전이할 위험이 있고 계산 비용도 고려해야 한다.

항목 SHAP LIME Counterfactuals
성능 트리 모델에서 고속, 범용 모형에서는 비용 높음 경량, 실시간 적용 용이 탐색/최적화 비용 큼
확장성 배경 샘플·近似 전략으로 수평 확장 가능 병렬 샘플링으로 선형 확장 배치·비동기 큐 필요
일관성 이론적 일관성 보장 하이퍼파라미터 민감 목적·제약에 따라 변동
안정성 배경 분포 관리 시 안정 샘플링 시드 고정 필요 제약/모형 민감도 높음
운영 편의 생태계·도구 풍부 구현 단순 비즈니스 규칙 통합 필요

추론 결과와 설명 결과를 함께 다루는 흐름

설명 생성은 모델 호출 뒤에 부가적으로 붙는 기능이 아니라, 데이터·서비스·거버넌스 계층을 갖춘 운영 파이프라인으로 다뤄야 한다.

트리/부스팅초과충족요청: 입력 x, 모델 f, 정책모델 유형SHAP: TreeExplainerSHAP: Kernel/ExplainerLIME: 교란 샘플링·로컬 회귀Counterfactual: 제약 최적화SHAP 기여도 s(x)LIME 계수 w(x)대안 사례 c(x)설명 집계시간/자원 한도폴백: 최근 캐시·요약 설명결과 패키징로그/메트릭 기록감사 저장소·재현 Config

데이터 계층에서는 배경 분포 샘플링, 민감변수 마스킹, 버전 관리를 관리한다. 서비스 계층은 추론과 설명의 일관성을 보장하는 트랜잭션, 타임아웃과 폴백 정책, 캐시·큐 기반 확장성을 맡는다. 거버넌스 계층에는 설명 로그 서명과 감사 추적, Seed·Config 고정에 따른 재현성, 승인 워크플로우가 포함된다.

모델 호출이 실패하면 재시도 1회 후 폴백 설명을 제공하고 원인·스택을 추적 로그로 남긴다. 추론 결과와 설명 생성에는 동일한 입력 스냅샷과 해시를 고정하고, 요청 단위 트랜잭션을 적용한다.

신뢰할 수 있는 설명인지 확인하는 기준

설명이 그럴듯해 보이는 것만으로 충분하지 않다. Faithfulness는 특성을 제거했을 때 예측이 실제로 어떻게 변하는지 검증하며, AUC·ROAR 등의 지표를 활용한다.

안정성과 재현성은 재시도 사이의 설명 분산을 확인하고, 샘플링과 배경집합에 대한 민감도를 측정해 평가한다. 주요 세그먼트와 엣지케이스에서 설명이 제공되는지도 커버리지로 모니터링해야 한다.

민감 특성을 차단하고 대리 변수 누수를 점검하며, 그룹 간 설명 분포 편차를 관찰한다. Faithfulness·Stability 벤치마크를 주기적으로 운영하고 재현 Seed와 버전을 고정하는 방식이 필요하다.

업무 맥락에서의 활용

신용 리스크 심사에서는 거절 사유 통지와 특성 기여도 기반 정책 보정에 활용할 수 있다. 전처리를 표준화한 다음 SHAP의 전역 분포를 점검하고, 지역 설명을 제공하며, 결과를 거버넌스 로그에 적재한다.

이상 거래 탐지에서는 조사 우선순위를 정하고 규칙을 보강하는 데 LIME을 사용할 수 있다. 빠른 로컬 설명으로 조사관의 판단을 돕고, 그 피드백을 반영해 룰 마이그레이션으로 이어간다.

의료 보조 판단에서는 최신 규제·가이드라인 확인이 필요하다. Counterfactual로 위험을 낮추기 위한 행동안을 제시한 뒤 의학적 타당성을 검수하고 가이드 문서로 남긴다.

마케팅 타깃팅에서는 전환 개선을 위해 조치 가능한 요인을 식별한다. Counterfactual로 최소 변경 요인을 도출하고 캠페인 변수를 설계한 다음 AB 테스트를 수행한다.

Python으로 SHAP·LIME·Counterfactual 실행하기

전제조건은 Python 3.10+, scikit-learn 1.4+, shap 0.41+, lime 0.2+, dice-ml 0.11+ 설치다. CPU 환경을 기준으로 하며, 대규모 트래픽에는 비동기·캐시 전략이 필요하다.

pip install scikit-learn shap lime dice-ml pandas numpy

아래 예시는 데이터 준비, 모델 학습, SHAP·LIME 설명, dice-ml 기반 Counterfactual 생성까지 연결한다.

# env: Python 3.10+, shap 0.41+, lime 0.2+, dice-ml 0.11+
import numpy as np, pandas as pd
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import roc_auc_score

# 1) 데이터
data = load_breast_cancer(as_frame=True)
X, y = data.data, data.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y)

# 2) 모델
clf = RandomForestClassifier(n_estimators=300, random_state=42)
clf.fit(X_train, y_train)
print("AUC:", roc_auc_score(y_test, clf.predict_proba(X_test)[:,1]))

# 3) SHAP: 모델 불가지론적 Explainer 자동 선택
import shap
explainer = shap.Explainer(clf, X_train, feature_names=X.columns)
i = 0  # 테스트 인덱스
shap_exp = explainer(X_test.iloc[[i]])
print("SHAP base value:", float(shap_exp.base_values))
print("Top SHAP features:", list(zip(X.columns, shap_exp.values[0]))[:5])

# 4) LIME: 로컬 선형 대리모델
from lime.lime_tabular import LimeTabularExplainer
lime_exp = LimeTabularExplainer(
    X_train.values, feature_names=X.columns.tolist(),
    class_names=["malignant","benign"], discretize_continuous=True, verbose=False, mode='classification'
)
explanation = lime_exp.explain_instance(
    X_test.iloc[i].values, clf.predict_proba, num_features=5, top_labels=1
)
print("LIME weights:", explanation.as_list(label=explanation.top_labels[0])[:5])

# 5) Counterfactuals: dice-ml
import dice_ml
from dice_ml import Dice
df = pd.concat([X_train, y_train.rename("target")], axis=1)
d = dice_ml.Data(dataframe=df, continuous_features=X.columns.tolist(), outcome_name='target')
m = dice_ml.Model(model=clf, backend="sklearn")
dice = Dice(d, m, method="genetic")
query = X_test.iloc[[i]].copy()
cf = dice.generate_counterfactuals(query, total_CFs=2, desired_class="opposite", features_to_vary="all")
print(cf.cf_examples_list[0].final_cfs_df)

SHAP의 배경 분포는 훈련 세트에서 계층 샘플 100~1,000개를 선정하고 데이터 시점을 고정해 관리한다. LIME은 random_state를 고정하고 교란 강도와 커널 폭을 사전 검증한다. Counterfactual에는 나이와 민감 속성처럼 변경할 수 없는 변수를 고정하고, 범주·도메인 제약을 명시한다.

비용, 공정성, 보안을 함께 조율하기

대량의 실시간 요청에는 LIME 또는 요약 SHAP를 온라인으로 제공하고, 상세 SHAP과 Counterfactual은 비동기 처리로 오프로딩할 수 있다. 동일 세션과 유사 샘플에는 근접 탐색 캐시를 적용한다.

설명 로그에는 PII를 마스킹하고, 모델 추정 공격을 완화하기 위해 출력 정밀도를 제한한다. 접근 통제와 감사 추적도 강화해야 한다. 최신 규제(EU AI Act 등)가 변경될 경우 업데이트가 필요하며 최신 정보 확인이 필요하다.

설명 정책은 목적, 대상 사용자, 보안 등급, 보존 기간을 포함한 카탈로그로 관리한다. 도메인 전문가의 승인과 피드백을 반영하는 인간 검토 루프를 운영한다.

심사·조사 업무 처리시간 20~40% 단축 사례와 모델 개선 사이클(가설→검증) 리드타임 30% 내외 단축이 제시된다. 감사·규제 대응 문서화 비용 절감도 기대할 수 있다. 사용자 신뢰도와 의사결정 투명성을 높이고, 모델 편향 탐지와 리스크 조기 경보, 조직 내 데이터·모델 리터러시 향상으로 이어질 수 있다.

운영 체계로 자리 잡게 하려면

도입 전에는 대상 사용자, 지연 한도, 규제 범위를 명시한다. 이후 SHAP·LIME·Counterfactual을 병행 평가해 성능·안정성·신뢰성 지표를 수집한다.

운영 단계에서는 추론-설명 일관성 트랜잭션과 캐시·비동기 큐, 감사 로깅을 구축한다. 정책·버전·Seed를 고정하고 정기 검증과 모니터링 체계를 유지해야 SHAP의 이론적 일관성, LIME의 속도·범용성, Counterfactual의 실행 가능 통찰을 함께 활용할 수 있다.

설명 가능 AISHAPLIME반사실적 설명모델 거버넌스