별이의 정보나눔/별이의 지식공유 프로젝트

XAI 개요,종류,실습을 기반한 이해

빅러닝 2025. 3. 13. 07:42
반응형

1. XAI란 무엇인가요? 🤔

**설명 가능한 인공지능(XAI)**는 AI 모델이 내린 결정의 이유를 인간이 이해할 수 있도록 설명하는 기술입니다. 기존의 AI 모델은 '블랙 박스'처럼 내부 동작이 불투명하여 결과를 해석하기 어려웠지만, XAI는 이러한 문제를 해결하여 AI의 투명성과 신뢰성을 높입니다. [출처: https://aidd.medium.com/explainable-ai-설명-가능한-인공지능-4b40bfb0a70]


---

2. XAI의 주요 기법 🛠️

XAI를 구현하기 위한 다양한 기법이 존재하며, 그중 대표적인 몇 가지를 소개합니다:

LIME (Local Interpretable Model-agnostic Explanations): 모델의 예측을 국소적으로 선형 모델로 근사하여 각 피처의 영향을 평가합니다.

SHAP (SHapley Additive exPlanations): 게임 이론의 샤플리 값을 활용하여 각 피처의 기여도를 계산합니다.

Feature Importance: 모델의 예측에 각 피처가 얼마나 중요한 역할을 하는지 평가합니다.



---

3. 실습: XAI 기법 적용해보기 🧑‍💻

이제 실제로 XAI 기법을 적용해보겠습니다. 아래 단계별로 따라해보세요!

3.1. 필요한 라이브러리 설치

먼저, Python 환경에서 필요한 라이브러리를 설치합니다:

pip install numpy pandas scikit-learn lime shap matplotlib

3.2. 데이터 로드 및 모델 학습

예제로 유방암 진단 데이터셋을 사용하여 로지스틱 회귀 모델을 학습시켜보겠습니다:

import numpy as np
import pandas as pd
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# 데이터 로드
data = load_breast_cancer()
X = pd.DataFrame(data.data, columns=data.feature_names)
y = pd.Series(data.target)

# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 모델 학습
model = LogisticRegression(max_iter=10000)
model.fit(X_train, y_train)

# 예측 및 정확도 확인
y_pred = model.predict(X_test)
print(f"Accuracy: {accuracy_score(y_test, y_pred):.2f}")

3.3. LIME을 활용한 설명

LIME을 사용하여 모델의 예측을 설명해보겠습니다:

import lime
import lime.lime_tabular

# LIME 설명자 생성
explainer = lime.lime_tabular.LimeTabularExplainer(X_train.values, feature_names=X_train.columns, class_names=['malignant', 'benign'], discretize_continuous=True)

# 테스트 데이터 중 하나 선택
i = 0
exp = explainer.explain_instance(X_test.values[i], model.predict_proba, num_features=5)
exp.show_in_notebook(show_table=True)

위 코드를 실행하면 선택한 테스트 데이터 포인트에 대해 모델이 어떤 피처를 기반으로 예측했는지 시각적으로 확인할 수 있습니다.

3.4. SHAP을 활용한 설명

SHAP을 사용하여 전체 피처의 중요도를 평가해보겠습니다:

import shap

# SHAP 값 계산
explainer = shap.LinearExplainer(model, X_train)
shap_values = explainer.shap_values(X_test)

# SHAP 요약 플롯
shap.summary_plot(shap_values, X_test)

이 플롯을 통해 각 피처가 모델 예측에 어떤 영향을 미치는지 전체적으로 파악할 수 있습니다.


---

4. 마치며 📝

이번 포스트에서는 XAI의 개념과 주요 기법을 소개하고, 실제로 LIME과 SHAP을 활용하여 모델의 예측을 설명하는 방법을 실습해보았습니다. 이러한 기법들을 통해 AI 모델의 투명성과 신뢰성을 향상시킬 수 있습니다. 앞으로도 AI를 활용한 다양한 분야에서 XAI의 중요성은 더욱 커질 것으로 예상됩니다. 🌟


---

참고 자료:

XAI 개념 및 개발 준비: https://eunhye-zz.tistory.com/16

XAI 실습 코드: https://github.com/wikibook/xai



---

여러분도 직접 실습해보시고, AI 모델의 예측을 이해하는 데 도움이 되시길 바랍니다! 😊