SHAP
- 쉬운 설명 물론입니다! SHAP(SHapley Additive exPlanations)을 보다 쉽게 이해할 수 있도록, 간단한 예시를 통해 설명해드리겠습니다. 이번에는 세 가지 특징 대신 두 가지 특징을 사용하는 예시로 SHAP 값을 계산해보겠습니다.
SHAP의 간단한 개념 재정리
SHAP은 머신러닝 모델의 예측 결과를 각 특징이 얼마나 기여했는지를 수치적으로 설명하는 방법입니다. 이는 협동 게임 이론의 샤플리 값(Shapley values)을 기반으로 하며, 각 특징이 예측에 공정하게 기여하도록 합니다.
예시 설정
간단한 예시를 통해 SHAP 값을 계산해보겠습니다. 다음과 같은 두 가지 특징을 가진 모델을 가정합시다:
- 특징 A
- 특징 B 그리고 모델의 예측 함수 는 다음과 같은 값을 반환한다고 가정합니다: | 특징 조합 | 예측 값 | |---|---| | 없음 () | 0 | | {A} | 3 | | {B} | 2 | | {A, B} | 5 |
여기서, 예측 값 는 두 특징 모두 사용했을 때의 모델 예측값입니다.
SHAP 값 계산
두 특징 와 의 SHAP 값 와 를 계산해보겠습니다. SHAP 값은 각 특징이 예측에 기여한 정도를 나타내며, 다음과 같은 공식을 사용합니다:
여기서:
- 은 전체 특징의 집합입니다. 이 예시에서는 .
- 는 의 부분집합으로, 특징 를 제외한 집합입니다.
- 는 특징 집합 만을 사용하여 예측한 모델의 출력입니다.
특징 A의 SHAP 값 계산
- 순서 1:
- 추가 전:
- 추가 후:
- 기여도:
- 가중치:
- 기여:
- 순서 2:
- 추가 전:
- 추가 후:
- 기여도:
- 가중치:
- 기여: 총 SHAP 값 :
특징 B의 SHAP 값 계산
- 순서 1:
- 추가 전:
- 추가 후:
- 기여도:
- 가중치:
- 기여:
- 순서 2:
- 추가 전:
- 추가 후:
- 기여도:
- 가중치:
- 기여: 총 SHAP 값 :
SHAP 값의 합 확인
모든 SHAP 값의 합이 전체 예측 값과 일치해야 합니다.
이렇게 SHAP 값의 합이 모델의 전체 예측 값과 일치함을 확인할 수 있습니다.
SHAP 값의 해석
- 특징 A의 SHAP 값 : 특징 A는 예측값을 3만큼 증가시키는 역할을 했습니다.
- 특징 B의 SHAP 값 : 특징 B는 예측값을 2만큼 증가시키는 역할을 했습니다. 이를 통해 모델의 예측이 어떻게 이루어졌는지를 명확하게 이해할 수 있습니다. SHAP 값은 각 특징이 예측에 기여한 정도를 수치적으로 보여주기 때문에, 모델의 해석 가능성을 크게 향상시킵니다.
추가적인 예시
더 나아가, 특징이 세 개 이상일 경우에도 SHAP 값은 유사한 방식으로 계산됩니다. 그러나 특징의 수가 늘어날수록 계산 복잡도가 증가하므로, 실제로는 SHAP 라이브러리와 같은 도구를 사용하여 효율적으로 SHAP 값을 계산합니다.
결론
SHAP은 머신러닝 모델의 예측을 각 특징의 기여도로 분해하여 설명하는 강력한 도구입니다. 위의 간단한 예시를 통해 SHAP 값이 어떻게 계산되고 해석되는지 이해할 수 있었기를 바랍니다. 실제 데이터와 모델에 적용할 때는 SHAP 라이브러리를 활용하여 보다 복잡한 모델의 예측도 투명하게 설명할 수 있습니다. 더 자세한 정보는 SHAP 공식 문서 를 참고하시기 바랍니다.
- 세가지 특징 예시
- 세가지 특징 예시 물론입니다! SHAP(SHapley Additive exPlanations)을 세 개의 특징을 사용한 예시로 보다 쉽게 설명해드리겠습니다. 이 예시는 각 특징이 모델의 예측에 어떻게 기여하는지를 명확하게 보여줄 것입니다.
예시 설정
세 가지 특징을 가진 간단한 모델을 가정해보겠습니다:
- 특징 A
- 특징 B
- 특징 C 모델의 예측 함수 는 다음과 같은 값을 반환한다고 가정합니다: | 특징 조합 | 예측 값 | |---|---| | 없음 () | 0 | | {A} | 1 | | {B} | 2 | | {C} | 3 | | {A, B} | 3 | | {A, C} | 4 | | {B, C} | 5 | | {A, B, C} | 6 |
이제 각 특징 , , 의 SHAP 값 , , 를 계산해보겠습니다. SHAP 값은 각 특징이 예측에 얼마나 기여했는지를 나타내며, 샤플리 값의 원리를 따릅니다.
SHAP 값 계산의 기본 원리
SHAP 값은 협동 게임 이론의 샤플리 값(Shapley values)을 기반으로 하며, 각 특징이 예측에 기여하는 공정한 값을 계산합니다. 샤플리 값의 계산 공식은 다음과 같습니다:
여기서:
- 은 전체 특징의 집합 ().
- 는 의 부분집합으로, 특징 를 제외한 집합입니다.
- 는 집합 의 원소 개수입니다.
- 는 특징 집합 만을 사용하여 예측한 모델의 출력입니다.
- 계수 는 특징 가 특정 순서로 추가될 때의 가중치를 나타냅니다.
각 특징의 SHAP 값 계산
1. 특징 A의 SHAP 값
특징 A의 SHAP 값을 계산하기 위해, A가 추가될 수 있는 모든 가능한 부분집합 에 대해 기여도를 계산합니다.
- S =
- 기여도:
- 가중치:
- 기여:
- S = \{B\}
- 기여도:
- 가중치:
- 기여:
- S = \{C\}
- 기여도:
- 가중치:
- 기여:
- S = \{B, C\}
- 기여도:
- 가중치:
- 기여: 총 SHAP 값 :
2. 특징 B의 SHAP 값
특징 B의 SHAP 값을 계산하기 위해, B가 추가될 수 있는 모든 가능한 부분집합 에 대해 기여도를 계산합니다.
- S =
- 기여도:
- 가중치:
- 기여:
- S = \{A\}
- 기여도:
- 가중치:
- 기여:
- S = \{C\}
- 기여도:
- 가중치:
- 기여:
- S = \{A, C\}
- 기여도:
- 가중치:
- 기여: 총 SHAP 값 :
3. 특징 C의 SHAP 값
특징 C의 SHAP 값을 계산하기 위해, C가 추가될 수 있는 모든 가능한 부분집합 에 대해 기여도를 계산합니다.
- S =
- 기여도:
- 가중치:
- 기여:
- S = \{A\}
- 기여도:
- 가중치:
- 기여:
- S = \{B\}
- 기여도:
- 가중치:
- 기여:
- S = \{A, B\}
- 기여도:
- 가중치:
- 기여: 총 SHAP 값 :
SHAP 값의 합 확인
모든 SHAP 값의 합이 모델의 전체 예측 값과 일치하는지 확인해보겠습니다.
합이 일치함을 확인할 수 있습니다.
SHAP 값의 해석
- 특징 A의 SHAP 값 : 특징 A는 예측값을 1만큼 증가시키는 역할을 했습니다.
- 특징 B의 SHAP 값 : 특징 B는 예측값을 2만큼 증가시키는 역할을 했습니다.
- 특징 C의 SHAP 값 : 특징 C는 예측값을 3만큼 증가시키는 역할을 했습니다. 이를 통해 모델의 예측이 각 특징에 의해 어떻게 이루어졌는지를 명확하게 이해할 수 있습니다.
시각적 예시
보다 직관적으로 이해하기 위해, 각 특징의 기여도를 막대 그래프로 표현할 수 있습니다:
예측 값: 6
특징 A 기여: 1
특징 B 기여: 2
특징 C 기여: 3
예측 값 (f({A, B, C}) = 6)
+-----------+
| 6 |
+-----------+
| A: 1 | B: 2 | C: 3 |
+-----------+
결론
이 예시를 통해 SHAP 값이 세 개의 특징을 가진 모델에서 어떻게 계산되고 해석되는지를 이해할 수 있습니다. SHAP은 각 특징이 모델의 예측에 공정하게 기여한 정도를 수치적으로 표현함으로써, 모델의 투명성과 해석 가능성을 크게 향상시킵니다. 실제 데이터와 복잡한 모델에 SHAP을 적용할 때는 SHAP 라이브러리를 활용하여 효율적으로 SHAP 값을 계산하고 시각화할 수 있습니다. 더 자세한 정보는 SHAP 공식 문서 를 참고하시기 바랍니다.
- eli5
ELI5란 무엇인가요?
- *ELI5(Explain Like I’m 5)**는 머신러닝 모델의 예측 결과를 이해하고 해석하는 데 도움을 주는 파이썬 라이브러리입니다. ELI5는 복잡한 모델의 내부 작동 방식을 시각적으로 표현하거나, 각 특징(feature)이 예측에 어떻게 기여하는지를 명확하게 보여줌으로써 모델의 투명성과 신뢰성을 높이는 데 사용됩니다.
ELI5의 주요 특징
- 모델 설명:
- 트리 기반 모델: 결정 트리, 랜덤 포레스트, 그래디언트 부스팅 트리 등 트리 기반 모델의 구조를 시각화하여 모델의 작동 방식을 이해할 수 있습니다.
- 선형 모델: 회귀나 로지스틱 회귀와 같은 선형 모델에서 각 특징의 가중치를 쉽게 확인할 수 있습니다.
- 신경망: 일부 신경망 모델에 대해서도 가중치나 중요도를 시각화할 수 있습니다.
- 특징 중요도 분석:
- 각 특징이 모델의 예측에 얼마나 기여하는지를 수치화하여 보여줍니다.
- 특정 예측에 대한 개별 특징의 기여도를 분석할 수 있습니다.
- 텍스트 데이터 해석:
- 텍스트 분류 모델의 경우, 단어별 중요도를 시각화하여 어떤 단어들이 예측에 중요한 역할을 했는지 확인할 수 있습니다.
- 다양한 모델 지원:
- scikit-learn, XGBoost, LightGBM 등 다양한 머신러닝 라이브러리에서 학습된 모델을 지원합니다.
ELI5의 작동 원리
ELI5는 모델의 내부 구조나 예측 과정에 직접적으로 접근하여 정보를 추출합니다. 이를 통해 각 특징의 중요도나 기여도를 계산하고, 이를 시각적으로 표현합니다. 예를 들어, 트리 기반 모델의 경우, 각 노드에서의 분할 기준과 그에 따른 중요도를 분석하여 전체적인 특징 중요도를 산출합니다.
특징 중요도 계산 방법
- 트리 기반 모델:
- 각 트리의 각 노드에서 특정 특징을 사용하여 데이터를 분할할 때, 해당 분할이 예측에 얼마나 기여했는지를 계산합니다.
- 모든 트리를 합산하여 전체적인 특징 중요도를 도출합니다.
- 선형 모델:
- 각 특징의 가중치(weight)를 직접적으로 사용하여 중요도를 계산합니다.
- 절대값이 큰 가중치를 가진 특징이 더 중요한 역할을 한다고 해석할 수 있습니다.
- 텍스트 데이터:
- 단어의 빈도나 TF-IDF 값 등을 기반으로 단어의 중요도를 계산합니다.
- 특정 단어가 예측에 미친 영향을 시각적으로 표시합니다.
ELI5 사용 예시
1. 선형 회귀 모델의 특징 중요도 시각화
import eli5
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
# 데이터 로드 및 모델 학습
iris = load_iris()
X, y = iris.data, iris.target
model = LogisticRegression(max_iter=200)
model.fit(X, y)
# ELI5로 모델 설명
eli5.show_weights(model, feature_names=iris.feature_names)
위 코드에서는 로지스틱 회귀 모델을 학습한 후, ELI5를 사용하여 각 특징의 가중치를 시각화합니다. 이를 통해 어떤 특징이 예측에 중요한 역할을 했는지 쉽게 파악할 수 있습니다.
2. 트리 기반 모델의 특징 중요도 시각화
import eli5
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
# 데이터 로드 및 모델 학습
iris = load_iris()
X, y = iris.data, iris.target
model = RandomForestClassifier()
model.fit(X, y)
# ELI5로 모델 설명
eli5.show_weights(model, feature_names=iris.feature_names)
랜덤 포레스트 모델의 경우, ELI5는 각 특징의 중요도를 계산하여 시각적으로 보여줍니다. 이를 통해 모델이 어떤 특징에 더 중점을 두고 있는지 확인할 수 있습니다.
ELI5와 SHAP의 비교
ELI5와 SHAP는 모두 모델 해석 도구이지만, 접근 방식과 제공하는 정보에서 차이가 있습니다.
- ELI5:
- 모델의 전체적인 특징 중요도를 제공하는 데 강점이 있습니다.
- 특정 예측에 대한 상세한 설명보다는 전체 모델의 해석에 더 초점을 맞춥니다.
- 사용법이 간단하고, 기본적인 시각화 기능을 제공합니다.
- SHAP:
- 개별 예측에 대한 특징의 기여도를 상세하게 설명할 수 있습니다.
- 협동 게임 이론에 기반한 공정한 기여도 할당 방식을 사용합니다.
- 복잡한 모델에서도 높은 해석력을 제공합니다. 둘 다 모델 해석에 유용하지만, 사용 목적에 따라 적합한 도구를 선택하는 것이 중요합니다. 전체적인 모델 해석이 필요하다면 ELI5를, 개별 예측의 세부적인 해석이 필요하다면 SHAP를 사용하는 것이 좋습니다.
결론
ELI5는 머신러닝 모델의 예측을 이해하고 해석하는 데 매우 유용한 도구입니다. 간단한 시각화와 직관적인 인터페이스를 통해 모델의 투명성을 높이고, 신뢰성을 강화할 수 있습니다. ELI5를 활용하면 복잡한 모델의 작동 방식을 쉽게 이해하고, 모델의 예측 결과를 효과적으로 전달할 수 있습니다. 더 자세한 정보와 사용법은 ELI5 공식 문서 를 참고하시기 바랍니다.
- XAI 라이브러리 물론입니다! SHAP과 ELI5 외에도 다양한 XAI(설명 가능한 인공지능) 라이브러리가 존재합니다. 아래에서는 대표적인 XAI 라이브러리들을 소개하고, 각각의 주요 특징과 활용 방법에 대해 설명드리겠습니다.
1. LIME (Local Interpretable Model-agnostic Explanations)
소개
LIME은 로컬 수준에서 모델의 예측을 설명하는 데 중점을 둔 모델 불가지론적(XAI) 도구입니다. 복잡한 모델의 특정 예측에 대해 이해하기 쉬운 해석을 제공하는 것이 목표입니다.
주요 특징
- 모델 불가지론적: 다양한 머신러닝 모델에 적용 가능.
- 로컬 해석: 개별 예측에 대한 설명을 제공.
- 간단한 인터페이스: 사용이 비교적 쉬움.
사용 예시
텍스트 분류, 이미지 분류 등 다양한 도메인에서 모델 예측의 주요 특징을 식별하는 데 사용됩니다.
설치 및 사용 예시
# 설치
pip install lime
# 사용 예시
from lime import lime_tabular
import numpy as np
import sklearn
from sklearn.ensemble import RandomForestClassifier
# 데이터 로드 및 모델 학습
X, y = sklearn.datasets.load_iris(return_X_y=True)
model = RandomForestClassifier()
model.fit(X, y)
# LIME 설명기 초기화
explainer = lime_tabular.LimeTabularExplainer(X, feature_names=['feature1', 'feature2', 'feature3', 'feature4'], class_names=['setosa', 'versicolor', 'virginica'], discretize_continuous=True)
# 특정 예측 설명
i = 0
exp = explainer.explain_instance(X[i], model.predict_proba, num_features=2)
exp.show_in_notebook()
2. InterpretML
소개
InterpretML은 마이크로소프트에서 개발한 XAI 라이브러리로, 다양한 해석 가능성 방법을 통합하여 제공합니다. 모델 투명성을 높이고, 모델의 예측을 이해하는 데 도움을 줍니다.
주요 특징
- 모델 불가지론적 및 모델 내재적 해석 도구 제공.
- 직관적인 시각화: 결과를 쉽게 이해할 수 있는 시각화 도구 제공.
- 다양한 해석 방법: 글로벌 및 로컬 해석 방법 지원.
사용 예시
신용 점수 예측, 의료 진단 등에서 모델의 주요 결정 요소를 파악하는 데 유용합니다.
설치 및 사용 예시
# 설치
pip install interpret
# 사용 예시
from interpret import show
from interpret.blackbox import ExplainableBoostingClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 데이터 로드 및 모델 학습
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=0)
model = ExplainableBoostingClassifier()
model.fit(X_train, y_train)
# 모델 설명
ebm = model.explain_global()
show(ebm)
3. Alibi
소개
Alibi는 이상 탐지, 설명, 반대 사례 생성 등을 포함한 다양한 XAI 기능을 제공하는 오픈소스 라이브러리입니다. 특히, 딥러닝 모델에 대한 해석에 강점을 가지고 있습니다.
주요 특징
- 다양한 해석 방법: 예측 설명, 이상 탐지, 반대 사례 생성 등 다양한 기능 제공.
- 딥러닝 지원: 텐서플로우, 파이토치 등 딥러닝 프레임워크와 호환.
- 모델 불가지론적: 여러 모델 유형에 적용 가능.
사용 예시
이미지 인식 모델에서 특정 픽셀이 예측에 미치는 영향을 분석하거나, 이상치를 탐지하는 데 사용됩니다.
설치 및 사용 예시
# 설치
pip install alibi
# 사용 예시 (이미지 분류 모델 설명)
from alibi.explainers import AnchorImage
from tensorflow.keras.applications.resnet50 import ResNet50, preprocess_input, decode_predictions
from tensorflow.keras.preprocessing import image
import numpy as np
# 모델 로드
model = ResNet50(weights='imagenet')
# 이미지 로드 및 전처리
img_path = 'elephant.jpg'
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
# Anchor 이미지 설명기 초기화
explainer = AnchorImage(model.predict, threshold=0.95)
explainer.fit(x, class_names=decode_predictions)
# 설명 생성
explanation = explainer.explain(x)
print(explanation)
4. Captum
소개
Captum은 페이스북에서 개발한 PyTorch 기반의 XAI 라이브러리로, 딥러닝 모델의 해석을 지원합니다. 특히, 신경망 모델의 내부 작동을 이해하는 데 유용합니다.
주요 특징
- PyTorch 통합: PyTorch 모델과 쉽게 통합 가능.
- 다양한 해석 기법: 기여도 분석, 특징 중요도 평가 등 다양한 기능 제공.
- 유연성: 사용자 정의 해석 방법 구현 가능.
사용 예시
이미지 분류 모델에서 특정 필터의 중요성을 분석하거나, 텍스트 분류 모델에서 단어의 기여도를 평가하는 데 사용됩니다.
설치 및 사용 예시
# 설치
pip install captum
# 사용 예시 (이미지 분류 모델 설명)
import torch
from torchvision.models import resnet18
from captum.attr import IntegratedGradients
from PIL import Image
from torchvision import transforms
# 모델 로드 및 전처리
model = resnet18(pretrained=True)
model.eval()
preprocess = transforms.Compose([
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])
img = Image.open('elephant.jpg')
input_tensor = preprocess(img).unsqueeze(0)
# Integrated Gradients 초기화
ig = IntegratedGradients(model)
# 속성 계산
attr, delta = ig.attribute(input_tensor, target=281, return_convergence_delta=True)
print(attr)
5. AIX360 (AI Explainability 360)
소개
AIX360은 IBM에서 개발한 오픈소스 XAI 라이브러리로, 다양한 해석 가능성 알고리즘을 제공합니다. 공정성, 투명성, 신뢰성을 높이는 데 중점을 두고 있습니다.
주요 특징
- 다양한 해석 방법: 글로벌 및 로컬 해석, 반대 사례 생성, 공정성 평가 등 다양한 기능 제공.
- 모델 불가지론적: 여러 모델 유형에 적용 가능.
- 상호 운용성: 다른 XAI 도구와 통합 가능.
사용 예시
의료 데이터 분석에서 모델의 예측을 설명하거나, 금융 모델의 공정성을 평가하는 데 사용됩니다.
설치 및 사용 예시
# 설치
pip install aix360
# 사용 예시 (로컬 설명)
from aix360.algorithms.rule_explainer import ContrastiveExplanation
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
# 데이터 로드 및 모델 학습
iris = load_iris()
X, y = iris.data, iris.target
model = LogisticRegression(max_iter=200)
model.fit(X, y)
# Contrastive Explanation 초기화
ce = ContrastiveExplanation()
# 특정 예측에 대한 설명 생성
instance = X[0].reshape(1, -1)
explanation = ce.explain(instance, model.predict_proba)
print(explanation)
6. Skater
소개
Skater는 머신러닝 모델의 해석을 지원하는 파이썬 라이브러리로, 모델의 투명성을 높이고, 특징 중요도 및 모델의 작동 방식을 이해하는 데 도움을 줍니다.
주요 특징
- 모델 불가지론적: 다양한 모델에 적용 가능.
- 글로벌 및 로컬 해석: 전체 모델과 개별 예측 모두에 대한 설명 제공.
- 시각화 도구: 이해하기 쉬운 시각화 기능 제공.
사용 예시
랜덤 포레스트 모델의 전체적인 특징 중요도를 분석하거나, 특정 예측에 대한 설명을 제공하는 데 사용됩니다.
설치 및 사용 예시
# 설치
pip install skater
# 사용 예시 (특징 중요도 시각화)
from skater.core.explanations import Interpretation
from skater.model import InMemoryModel
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 데이터 로드 및 모델 학습
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=0)
model = RandomForestClassifier()
model.fit(X_train, y_train)
# Interpretation 객체 초기화
interpreter = Interpretation(training_data=X_train, feature_names=iris.feature_names, target_names=iris.target_names)
# 모델 래핑
in_memory = InMemoryModel(model.predict_proba, examples=X_train, target_names=iris.target_names)
# 특징 중요도 시각화
interpreter.feature_importance.plot_feature_importance(in_memory, ascending=False, figsize=(6,4))
결론
XAI는 머신러닝 모델의 투명성과 신뢰성을 높이는 데 중요한 역할을 합니다. SHAP과 ELI5 외에도 다양한 XAI 라이브러리가 존재하며, 각 라이브러리는 고유한 기능과 강점을 가지고 있습니다. 사용 목적과 모델 유형에 따라 적합한 라이브러리를 선택하여 모델의 해석 가능성을 향상시킬 수 있습니다.
추가 자료
- LIME 공식 문서: LIME GitHub
- InterpretML 공식 문서: InterpretML Documentation
- Alibi 공식 문서: Alibi Documentation
- Captum 공식 문서: Captum Documentation
- AIX360 공식 문서: AIX360 Documentation
- Skater 공식 문서: Skater Documentation 각 라이브러리의 공식 문서를 참고하여 더욱 심도 있는 사용법과 예제를 확인하시기 바랍니다.
- XAI 라이브러리(2) 물론입니다! SHAP, ELI5, LIME, InterpretML, Alibi, Captum, AIX360, Skater 외에도 다양한 XAI(설명 가능한 인공지능) 라이브러리가 존재합니다. 아래에서는 추가적인 XAI 라이브러리들을 소개하고, 각각의 주요 특징과 활용 방법에 대해 설명드리겠습니다.
7. DALEX (Descriptive mAchine Learning EXplanations)
소개
DALEX는 모델 해석과 평가를 위한 프레임워크로, 특히 R과 Python에서 널리 사용됩니다. 모델의 성능을 시각화하고, 다양한 해석 방법을 통합하여 제공합니다.
주요 특징
- 모델 불가지론적: 다양한 머신러닝 모델에 적용 가능.
- 글로벌 및 로컬 해석: 전체 모델과 개별 예측 모두에 대한 설명 제공.
- 통합 도구: SHAP, LIME 등 다른 해석 도구와 통합하여 사용할 수 있습니다.
사용 예시
# 설치
pip install dalex
# 사용 예시
import dalex as dx
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 데이터 로드 및 모델 학습
iris = load_iris()
X, y = iris.data, iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
model = RandomForestClassifier()
model.fit(X_train, y_train)
# DALEX Explainer 생성
explainer = dx.Explainer(model, X_test, y_test, label="Random Forest")
# 글로벌 모델 해석
explainer.model_parts()
# 로컬 예측 해석
observation = X_test.iloc[0]
explainer.predict_parts(observation)
공식 문서
8. What-If Tool
소개
What-If Tool은 구글에서 개발한 시각적 인터페이스 기반의 XAI 도구로, TensorBoard와 통합되어 모델을 코드 작성 없이 시각적으로 분석할 수 있습니다. 주로 TensorFlow 모델과 함께 사용됩니다.
주요 특징
- 코드 없는 분석: 시각적 인터페이스를 통해 모델의 예측과 특징 중요도를 분석할 수 있습니다.
- 데이터 탐색: 데이터 포인트를 수정하거나 필터링하여 모델의 반응을 실시간으로 확인할 수 있습니다.
- 공정성 평가: 모델의 예측이 특정 그룹에 편향되어 있는지 평가할 수 있습니다.
사용 예시
What-If Tool은 주로 TensorBoard와 함께 사용되므로, TensorFlow 모델을 학습한 후 TensorBoard를 통해 접근합니다.
# TensorFlow 및 TensorBoard 설치
pip install tensorflow tensorboard
# 모델 학습 및 TensorBoard 로깅 예시
import tensorflow as tf
from tensorflow import keras
# 데이터 로드
(x_train, y_train), (x_test, y_test) = keras.datasets.iris.load_data()
# 간단한 모델 정의
model = keras.Sequential([
keras.layers.Dense(10, activation='relu', input_shape=(4,)),
keras.layers.Dense(3, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# TensorBoard 콜백 설정
tensorboard_callback = keras.callbacks.TensorBoard(log_dir="./logs")
# 모델 학습
model.fit(x_train, y_train, epochs=10, callbacks=[tensorboard_callback])
# TensorBoard 실행
# 터미널에서 다음 명령어를 실행합니다.
# tensorboard --logdir=./logs
TensorBoard가 실행되면 What-If Tool을 통해 모델을 시각적으로 분석할 수 있습니다.
공식 문서
9. DeepExplain
소개
DeepExplain은 딥러닝 모델의 예측을 설명하기 위한 라이브러리로, 다양한 설명 기법을 지원합니다. 주로 텐서플로우(TensorFlow)와 케라스(Keras) 모델에 사용됩니다.
주요 특징
- 다양한 해석 기법 지원: Saliency Maps, Layer-wise Relevance Propagation (LRP), DeepLIFT 등 여러 방법 제공.
- 딥러닝 특화: 복잡한 신경망 모델의 내부 작동을 설명하는 데 강점이 있습니다.
사용 예시
# 설치
pip install deepexplain
# 사용 예시
import tensorflow as tf
from keras.models import Sequential
from keras.layers import Dense
from deepexplain.tensorflow import DeepExplain
import numpy as np
# 간단한 모델 정의
model = Sequential([
Dense(10, activation='relu', input_shape=(4,)),
Dense(3, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# 더미 데이터 생성
X_train = np.random.rand(100, 4)
y_train = np.random.randint(0, 3, 100)
# 모델 학습
model.fit(X_train, y_train, epochs=5)
# DeepExplain 사용
with DeepExplain(session=tf.keras.backend.get_session()) as de:
inputs = model.input
predictions = model.output
target = predictions[:, y_train[0]]
saliency = de.explain('saliency', target, inputs, X_train[:1])
print(saliency)
공식 문서
10. iNNvestigate
소개
iNNvestigate는 딥러닝 모델의 해석을 위한 라이브러리로, 특히 합성곱 신경망(CNN)에 최적화되어 있습니다. 텐서플로우(TensorFlow)와 케라스(Keras) 모델을 지원합니다.
주요 특징
- 다양한 해석 기법 지원: Gradient, Integrated Gradients, SmoothGrad, LRP 등 여러 방법 제공.
- 딥러닝 특화: 이미지 분류 모델 등 복잡한 신경망의 해석에 강점.
- 확장성: 사용자 정의 해석 방법을 쉽게 추가할 수 있습니다.
사용 예시
# 설치
pip install innvestigate
# 사용 예시
import innvestigate
import innvestigate.utils as iutils
import tensorflow as tf
from tensorflow.keras.applications import VGG16
from tensorflow.keras.preprocessing import image
import numpy as np
import matplotlib.pyplot as plt
# 사전 학습된 VGG16 모델 로드
model = VGG16()
model.eval()
# iNNvestigate 분석기 초기화
analyzer = innvestigate.create_analyzer("lrp.alpha_2_beta_1", model)
# 이미지 로드 및 전처리
img_path = 'elephant.jpg'
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = tf.keras.applications.vgg16.preprocess_input(x)
# 속성 계산
analysis = analyzer.analyze(x)
# 시각화
iutils.visualize_image(analysis[0], cmap="seismic")
plt.show()
공식 문서
11. Quince
소개
Quince는 자연어 처리(NLP) 모델의 해석을 위한 XAI 라이브러리입니다. 텍스트 데이터에서 모델의 예측에 영향을 미치는 단어와 구를 식별하는 데 특화되어 있습니다.
주요 특징
- NLP 특화: 텍스트 데이터의 해석에 최적화.
- 다양한 해석 기법: Attention 기반 설명, Gradient 기반 설명 등.
- 쉬운 통합: 주요 딥러닝 프레임워크와 쉽게 통합 가능.
사용 예시
Quince는 NLP 모델에서 단어의 중요도를 시각화하는 데 주로 사용됩니다. 다음은 간단한 예시입니다.
# 설치
pip install quince
# 사용 예시 (가상의 코드)
import quince
from quince import explain
# 텍스트 분류 모델 로드
model = load_your_text_model()
# 분석할 텍스트
text = "This is a fantastic product with excellent features."
# 설명 생성
explanation = explain(model, text)
# 시각화
explanation.visualize()
공식 문서
12. LIME Extensions
소개
기본 LIME 라이브러리는 여러 도메인에 맞춰 확장된 버전들이 존재합니다. 예를 들어, LIME Text와 LIME Image는 각각 텍스트 데이터와 이미지 데이터에 특화된 해석을 제공합니다.
주요 특징
- 도메인 특화: 텍스트와 이미지 데이터에 최적화된 해석 기법 제공.
- 확장성: 기본 LIME의 기능을 확장하여 다양한 유형의 데이터에 적용 가능.
사용 예시
텍스트 데이터 해석
# 설치
pip install lime
# 사용 예시 (텍스트 분류)
from lime.lime_text import LimeTextExplainer
from sklearn.pipeline import make_pipeline
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer
# 데이터 로드 및 모델 학습
categories = ['alt.atheism', 'sci.space']
newsgroups_train = fetch_20newsgroups(subset='train', categories=categories)
vectorizer = TfidfVectorizer()
X_train = vectorizer.fit_transform(newsgroups_train.data)
y_train = newsgroups_train.target
model = LogisticRegression()
model.fit(X_train, y_train)
# LIME 설명기 초기화
explainer = LimeTextExplainer(class_names=newsgroups_train.target_names)
idx = 10
exp = explainer.explain_instance(newsgroups_train.data[idx], model.predict_proba, num_features=6)
print(exp.show_in_notebook(text=True))
이미지 데이터 해석
# 설치
pip install lime
# 사용 예시 (이미지 분류)
from lime import lime_image
from skimage.segmentation import mark_boundaries
import matplotlib.pyplot as plt
from tensorflow.keras.applications.vgg16 import VGG16, preprocess_input, decode_predictions
from tensorflow.keras.preprocessing import image
import numpy as np
# 모델 로드
model = VGG16()
# 이미지 로드 및 전처리
img_path = 'elephant.jpg'
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
# LIME 이미지 설명기 초기화
explainer = lime_image.LimeImageExplainer()
explanation = explainer.explain_instance(x[0].astype('double'), model.predict, top_labels=5, hide_color=0, num_samples=1000)
# 시각화
temp, mask = explanation.get_image_and_mask(explanation.top_labels[0], positive_only=True, num_features=5, hide_rest=False)
plt.imshow(mark_boundaries(temp / 2 + 0.5, mask))
plt.show()
공식 문서
13. Anchor (Alibi 라이브러리의 일부)
소개
Anchor는 Alibi 라이브러리의 일부로, 고정된 규칙 기반의 로컬 설명을 제공합니다. 특정 예측에 대한 “정답을 지지하는” 조건부 규칙을 생성하여 모델의 예측을 설명합니다.
주요 특징
- 정확한 규칙 기반 설명: 간단하고 이해하기 쉬운 규칙을 생성하여 예측을 설명.
- 높은 정확도: 규칙이 모델의 예측을 높은 확률로 지원.
- 다양한 도메인 지원: 텍스트, 이미지, 구조화된 데이터 등 다양한 유형의 데이터에 적용 가능.
사용 예시
# 설치
pip install alibi
# 사용 예시 (텍스트 데이터)
from alibi.explainers import AnchorText
from sklearn.linear_model import LogisticRegression
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.pipeline import make_pipeline
import numpy as np
# 데이터 및 모델 준비
texts = ["I love this movie", "I hate this movie", "This film was fantastic", "This film was terrible"]
labels = [1, 0, 1, 0]
vectorizer = CountVectorizer()
model = make_pipeline(vectorizer, LogisticRegression())
model.fit(texts, labels)
# Anchor 설명기 초기화
explainer = AnchorText(model.predict, threshold=0.95, use_unk=True, split_expression='\\\\W+')
# 설명 생성
test_text = "I love this film"
explanation = explainer.explain(test_text)
print(explanation.anchor)
print("Precision:", explanation.precision)
print("Coverage:", explanation.coverage)
공식 문서
14. Fairlearn
소개
Fairlearn는 머신러닝 모델의 공정성을 평가하고 개선하는 데 중점을 둔 XAI 도구입니다. 모델의 예측이 특정 그룹에 편향되지 않도록 조정할 수 있는 기능을 제공합니다.
주요 특징
- 공정성 평가: 다양한 공정성 지표를 제공하여 모델의 편향을 평가.
- 공정성 개선: 모델을 조정하여 공정성을 개선하는 알고리즘 제공.
- 모델 불가지론적: 다양한 머신러닝 모델에 적용 가능.
사용 예시
# 설치
pip install fairlearn
# 사용 예시
from fairlearn.metrics import MetricFrame, selection_rate
from fairlearn.datasets import fetch_adult
from fairlearn.metrics import demographic_parity_difference
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
# 데이터 로드
data = fetch_adult()
X = data.data
y = data.target
sensitive_features = X['sex']
# 데이터 분할
X_train, X_test, y_train, y_test, sensitive_train, sensitive_test = train_test_split(
X, y, sensitive_features, random_state=0)
# 모델 학습
model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)
# 예측
y_pred = model.predict(X_test)
# 공정성 지표 계산
metric_frame = MetricFrame(metrics=selection_rate,
y_true=y_test,
y_pred=y_pred,
sensitive_features=sensitive_test)
print(metric_frame.by_group)
print("Overall selection rate:", metric_frame.overall)
print("Difference between groups:", metric_frame.difference())
공식 문서
15. TensorFlow Model Analysis (TFMA)
소개
- *TensorFlow Model Analysis (TFMA)**는 TensorFlow Extended(TFX)의 일부로, 대규모 머신러닝 모델의 성능을 평가하고 해석하는 데 사용됩니다. 특히, 모델의 공정성 및 안정성을 평가하는 데 유용합니다.
주요 특징
- 대규모 데이터 지원: 분산 환경에서 대규모 데이터를 처리할 수 있습니다.
- 공정성 평가: 다양한 공정성 지표를 제공.
- 통합 도구: TFX 파이프라인과 통합하여 모델 분석을 자동화.
사용 예시
TFMA는 주로 TFX 파이프라인 내에서 사용되며, TensorFlow 모델의 성능을 다양한 지표로 평가합니다.
# 설치
pip install tensorflow-model-analysis
# 사용 예시 (TFMA 분석 설정)
import tensorflow_model_analysis as tfma
# 모델과 평가 데이터를 준비
eval_config = tfma.EvalConfig(
model_specs=[tfma.ModelSpec(label_key='target')],
metrics_specs=[tfma.MetricsSpec(metrics=[
tfma.MetricConfig(class_name='Accuracy'),
tfma.MetricConfig(class_name='AUC')
])],
slicing_specs=[tfma.SlicingSpec(), tfma.SlicingSpec(feature_keys=['gender'])]
)
# TFMA 실행 (주로 TFX 파이프라인 내에서)
tfma.run_model_analysis(
eval_config=eval_config,
data_location='path/to/eval/data',
model_location='path/to/model',
output_path='path/to/output'
)
공식 문서
결론
XAI(설명 가능한 인공지능)는 머신러닝 모델의 투명성과 신뢰성을 높이는 데 필수적인 도구입니다. SHAP, ELI5, LIME, InterpretML, Alibi, Captum, AIX360, Skater 외에도 DALEX, What-If Tool, DeepExplain, iNNvestigate, Quince, Fairlearn, TFMA 등 다양한 라이브러리가 존재하며, 각 라이브러리는 고유한 기능과 강점을 가지고 있습니다. 모델의 유형, 데이터의 특성, 해석의 목적에 따라 적합한 XAI 도구를 선택하여 모델의 해석 가능성을 향상시킬 수 있습니다. 각 라이브러리의 공식 문서를 참고하여 더욱 심도 있는 사용법과 예제를 확인하시기 바랍니다.
추가 자료
- DALEX 공식 문서: DALEX Documentation
- What-If Tool 공식 문서: What-If Tool
- DeepExplain GitHub: DeepExplain GitHub
- iNNvestigate GitHub: iNNvestigate GitHub
- Quince GitHub: Quince GitHub
- Fairlearn 공식 문서: Fairlearn Documentation
- TFMA 공식 문서: TFMA Documentation 이 외에도 다양한 XAI 도구들이 지속적으로 개발되고 있으므로, 최신 정보를 확인하며 필요한 도구를 선택하는 것이 중요합니다.
- XAI 라이브러리(3) 물론입니다! SHAP, ELI5, LIME, InterpretML, Alibi, Captum, AIX360, Skater, DALEX, What-If Tool, DeepExplain, iNNvestigate, Quince, Fairlearn, TFMA 외에도 다양한 XAI(설명 가능한 인공지능) 라이브러리가 존재합니다. 아래에서는 추가적인 XAI 라이브러리들을 소개하고, 각각의 주요 특징과 활용 방법에 대해 설명드리겠습니다.
16. Yellowbrick
소개
Yellowbrick은 머신러닝 모델의 시각화를 지원하는 파이썬 라이브러리로, 모델의 성능 평가 및 해석을 위한 다양한 시각화 도구를 제공합니다. 모델의 학습 과정과 예측 결과를 시각적으로 분석할 수 있어, 모델의 투명성과 해석 가능성을 높이는 데 유용합니다.
주요 특징
- 모델 평가 시각화: ROC 곡선, 정밀도-재현율 곡선 등 다양한 평가 지표 시각화.
- 모델 해석 시각화: 특징 중요도, 잔차 분석 등 모델의 내부 작동을 시각화.
- 통합 도구: scikit-learn과의 높은 호환성으로 쉽게 통합 가능.
- 유연한 시각화 옵션: 사용자 정의 가능한 시각화 도구 제공.
사용 예시
# 설치
pip install yellowbrick
# 사용 예시 (특징 중요도 시각화)
from yellowbrick.model_selection import FeatureImportances
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 데이터 로드 및 모델 학습
iris = load_iris()
X, y = iris.data, iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
model = RandomForestClassifier()
model.fit(X_train, y_train)
# 특징 중요도 시각화
viz = FeatureImportances(model, labels=iris.feature_names)
viz.fit(X_train, y_train)
viz.show()
공식 문서
17. PDPbox
소개
PDPbox는 **Partial Dependence Plots (PDP)**과 Individual Conditional Expectation (ICE) 플롯을 생성하기 위한 파이썬 라이브러리입니다. 이 도구는 모델의 특정 특징이 예측에 미치는 영향을 시각화하여, 모델의 해석 가능성을 높이는 데 사용됩니다.
주요 특징
- Partial Dependence Plots (PDP): 특정 특징의 변화에 따른 예측 값의 평균 변화를 시각화.
- Individual Conditional Expectation (ICE): 각 데이터 포인트에 대한 특징 변화에 따른 예측 값의 변화를 시각화.
- 다양한 시각화 옵션: 여러 특징을 동시에 분석할 수 있는 기능 제공.
- 모델 불가지론적: 다양한 머신러닝 모델에 적용 가능.
사용 예시
# 설치
pip install pdpbox
# 사용 예시 (PDP 생성)
from pdpbox import pdp, get_dataset, info_plots
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 데이터 로드 및 모델 학습
iris = load_iris()
X, y = iris.data, iris.target
feature_names = iris.feature_names
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
model = RandomForestClassifier()
model.fit(X_train, y_train)
# PDP 생성
pdp_feature = pdp.pdp_isolate(model=model, dataset=X_test, model_features=feature_names, feature='petal length (cm)')
pdp.pdp_plot(pdp_feature, 'petal length (cm)')
공식 문서
18. SageMaker Clarify
소개
SageMaker Clarify는 아마존 웹 서비스(AWS)에서 제공하는 XAI 도구로, 머신러닝 모델의 공정성, 편향성, 설명 가능성을 평가하고 개선하는 데 중점을 둡니다. 특히, 대규모 데이터와 모델에 대해 효율적으로 작동합니다.
주요 특징
- 편향 탐지: 데이터와 모델 예측에서의 편향을 자동으로 탐지.
- 공정성 평가: 다양한 공정성 지표를 제공하여 모델의 편향성을 평가.
- 설명 가능성: SHAP 값을 활용하여 모델 예측의 설명을 제공.
- AWS 통합: SageMaker와의 긴밀한 통합으로 대규모 데이터 및 모델에 적용 가능.
사용 예시
# SageMaker 환경 설정이 필요합니다. AWS 콘솔에서 SageMaker Clarify를 설정 후 사용 가능합니다.
# 예시 코드 (데이터 편향 탐지)
import sagemaker
from sagemaker.clarify import BiasConfig, DatasetConfig, SageMakerClarifyProcessor
# SageMaker 세션 설정
sess = sagemaker.Session()
role = 'Your_SageMaker_Role'
# 데이터 및 모델 설정
dataset_config = DatasetConfig(
s3_data_path='s3://your-bucket/data.csv',
s3_output_path='s3://your-bucket/output/',
label='target_column',
protected_attribute_names=['gender', 'race']
)
bias_config = BiasConfig(
label_values_or_threshold=[1],
facet_name='gender',
facet_values_or_threshold=['Female']
)
# Clarify 프로세서 초기화
clarify_processor = SageMakerClarifyProcessor(
role=role,
instance_count=1,
instance_type='ml.m5.xlarge',
sagemaker_session=sess
)
# 편향 분석 실행
clarify_processor.run_bias(
dataset_config=dataset_config,
bias_config=bias_config,
method='pearsonr'
)
공식 문서
19. H2O.ai’s Driverless AI Explainability
소개
H2O.ai의 Driverless AI는 자동화된 머신러닝 플랫폼으로, 내장된 설명 가능성 도구를 통해 모델의 예측을 해석하고 시각화할 수 있습니다. 특히, 비즈니스 사용자에게 친숙한 인터페이스를 제공하여 모델 해석을 용이하게 합니다.
주요 특징
- 자동화된 설명 도구: 모델 학습과 동시에 자동으로 특징 중요도, SHAP 값 등을 계산.
- 시각화 기능: 다양한 시각화 도구를 통해 모델의 예측을 직관적으로 이해.
- 사용자 친화적 인터페이스: 코드 작성 없이도 모델 해석 가능.
- 통합 기능: 모델의 성능 평가와 해석을 한 곳에서 관리.
사용 예시
Driverless AI는 주로 웹 인터페이스를 통해 사용되므로, 코드 예시보다는 웹 인터페이스를 통한 사용 방법이 주를 이룹니다. 아래는 개략적인 사용 절차입니다.
- 데이터 업로드: H2O.ai 플랫폼에 데이터셋을 업로드합니다.
- 모델 학습: 드래그 앤 드롭 방식으로 모델을 학습시킵니다.
- 모델 설명: 학습된 모델에 대한 SHAP 값, 특징 중요도 등을 시각화하여 분석합니다.
공식 문서
H2O.ai Driverless AI Documentation
20. OpenXAI
소개
OpenXAI는 다양한 XAI 도구와 프레임워크를 통합하여 제공하는 오픈소스 플랫폼입니다. 머신러닝 모델의 해석 가능성을 높이기 위한 다양한 기능을 제공하며, 연구자와 개발자가 쉽게 접근할 수 있도록 설계되었습니다.
주요 특징
- 통합 플랫폼: 여러 XAI 도구를 한 곳에서 관리하고 사용할 수 있는 환경 제공.
- 모델 불가지론적: 다양한 머신러닝 및 딥러닝 모델에 적용 가능.
- 확장성: 사용자 정의 해석 방법을 쉽게 추가할 수 있는 구조.
- 커뮤니티 지원: 활발한 오픈소스 커뮤니티를 통해 지속적인 업데이트와 지원.
사용 예시
OpenXAI는 아직 발전 중인 프로젝트로, 구체적인 사용 예시는 공식 문서를 참고해야 합니다. 그러나 기본적인 사용 방법은 다른 XAI 도구와 유사하게, 모델을 로드하고 해석 도구를 적용하는 방식입니다.
공식 문서
21. Explainaboard
소개
Explainaboard는 머신러닝 모델의 성능을 종합적으로 평가하고, 설명 가능한 방식으로 결과를 시각화하는 도구입니다. 특히, 다양한 데이터셋과 모델에 대한 비교 분석을 용이하게 합니다.
주요 특징
- 종합 평가: 다양한 성능 지표를 한눈에 비교 분석.
- 설명 가능 시각화: 모델의 성능과 특징 중요도를 시각적으로 표현.
- 다양한 데이터셋 지원: 여러 종류의 데이터셋에 대해 동일한 기준으로 평가 가능.
- 웹 기반 인터페이스: 웹 브라우저를 통해 쉽게 접근하고 사용할 수 있음.
사용 예시
Explainaboard는 주로 웹 기반 도구로 제공되므로, 웹 인터페이스를 통해 모델과 데이터셋을 업로드하고 분석을 수행합니다. 아래는 개략적인 사용 절차입니다.
- 웹 사이트 접속: Explainaboard 웹 사이트에 접속합니다.
- 모델 및 데이터셋 업로드: 평가하고자 하는 모델과 데이터셋을 업로드합니다.
- 성능 평가 및 시각화: 다양한 지표를 기반으로 모델의 성능을 평가하고, 결과를 시각화합니다.
공식 문서
22. IBM AI Explainability 360 (AI Explainability 360 Toolkit)
소개
IBM AI Explainability 360은 IBM에서 개발한 오픈소스 XAI 도구 모음으로, 다양한 설명 가능성 알고리즘을 제공합니다. 공정성, 투명성, 신뢰성을 높이는 데 중점을 두고 있으며, 기업 환경에서의 활용을 목표로 합니다.
주요 특징
- 다양한 해석 방법: 글로벌 및 로컬 해석, 반대 사례 생성, 공정성 평가 등 여러 기능 제공.
- 모델 불가지론적: 다양한 머신러닝 모델에 적용 가능.
- 사용자 친화적: 쉬운 통합과 사용을 위한 직관적인 인터페이스 제공.
- 공정성 도구: 모델의 편향성을 평가하고 개선하는 도구 포함.
사용 예시
# 설치
pip install aix360
# 사용 예시 (로컬 설명)
from aix360.algorithms.rule_explainer import ContrastiveExplanation
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
import pandas as pd
# 데이터 로드 및 모델 학습
iris = load_iris()
X, y = iris.data, iris.target
feature_names = iris.feature_names
df = pd.DataFrame(X, columns=feature_names)
model = LogisticRegression(max_iter=200)
model.fit(df, y)
# Contrastive Explanation 초기화
ce = ContrastiveExplanation()
# 특정 예측에 대한 설명 생성
instance = df.iloc[0].values.reshape(1, -1)
explanation = ce.explain(instance, model.predict_proba)
print(explanation)
공식 문서
IBM AI Explainability 360 Documentation
23. DeepSHAP
소개
DeepSHAP는 SHAP 값을 딥러닝 모델에 효율적으로 적용하기 위해 개발된 확장 도구입니다. SHAP의 이론적 강점을 딥러닝 모델에 적용하여, 각 특징의 기여도를 정확하고 효율적으로 계산할 수 있도록 합니다.
주요 특징
- 딥러닝 특화: 복잡한 신경망 모델에 최적화된 SHAP 값 계산.
- 효율성: 대규모 데이터셋과 복잡한 모델에서도 효율적으로 작동.
- 정확성: SHAP의 이론적 기반을 유지하며 높은 정확도의 설명 제공.
- 통합 가능성: 다양한 딥러닝 프레임워크와 호환 가능.
사용 예시
DeepSHAP는 주로 SHAP 라이브러리의 일부로 통합되어 사용됩니다. 따라서 SHAP를 사용하는 방식과 유사하게 적용할 수 있습니다.
# 설치
pip install shap
# 사용 예시 (딥러닝 모델 설명)
import shap
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 데이터 로드 및 모델 학습
iris = load_iris()
X, y = iris.data, iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
model = Sequential([
Dense(10, activation='relu', input_shape=(4,)),
Dense(3, activation='softmax')
])
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(X_train, y_train, epochs=50, verbose=0)
# DeepSHAP 사용
explainer = shap.DeepExplainer(model, X_train[:100])
shap_values = explainer.shap_values(X_test[:10])
# 시각화
shap.summary_plot(shap_values, X_test[:10], feature_names=iris.feature_names)
공식 문서
24. Fairness Indicators
소개
Fairness Indicators는 구글에서 개발한 XAI 도구로, 머신러닝 모델의 공정성을 평가하고 시각화하는 데 중점을 둡니다. 특히, 다양한 공정성 지표를 제공하여 모델이 특정 그룹에 편향되지 않도록 평가할 수 있습니다.
주요 특징
- 공정성 평가 지표: 다양한 공정성 지표를 제공하여 모델의 편향성을 다각적으로 평가.
- 시각화 도구: 공정성 지표를 직관적으로 이해할 수 있는 시각화 제공.
- TensorFlow 통합: TensorFlow 모델과의 높은 호환성.
- 대규모 데이터 지원: 대규모 데이터셋에 대한 효율적인 평가 지원.
사용 예시
Fairness Indicators는 주로 TensorFlow Extended(TFX)와 함께 사용되며, TensorFlow 모델의 평가 파이프라인에 통합됩니다.
# 설치
pip install tensorflow-fairness-indicators
# 사용 예시 (공정성 지표 평가)
import tensorflow as tf
import tensorflow_fairness_indicators as fairness_indicators
# 데이터 로드 및 모델 학습 (예시 생략)
# 공정성 지표 평가
fairness_indicators.visualize(
fairness_indicators.get_slicing_spec(['gender']),
metrics=['accuracy', 'precision', 'recall'],
dataset=(X_test, y_test, sensitive_features_test)
)
공식 문서
Fairness Indicators Documentation
25. Integrated Gradients (via Captum or Custom Implementation)
소개
Integrated Gradients는 딥러닝 모델의 예측을 설명하기 위한 기법으로, 모델의 입력 특징이 예측에 미치는 영향을 계산합니다. Captum과 같은 라이브러리를 통해 쉽게 구현할 수 있습니다.
주요 특징
- 딥러닝 특화: 신경망 모델의 내부 작동을 이해하는 데 최적화.
- 기여도 계산: 각 특징의 예측 기여도를 정확하게 계산.
- 직관적인 해석: 모델의 예측이 특정 특징에 의해 어떻게 영향을 받았는지 명확히 이해 가능.
- 모델 불가지론적: 다양한 딥러닝 프레임워크와 호환 가능.
사용 예시
# 설치
pip install captum
# 사용 예시 (Integrated Gradients)
import torch
from torch import nn
from captum.attr import IntegratedGradients
from torchvision.models import resnet18
from torchvision import transforms
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
# 모델 로드 및 설정
model = resnet18(pretrained=True)
model.eval()
# 이미지 로드 및 전처리
img_path = 'elephant.jpg'
transform = transforms.Compose([
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225]),
])
img = Image.open(img_path)
input_tensor = transform(img).unsqueeze(0)
# Integrated Gradients 초기화
ig = IntegratedGradients(model)
# 속성 계산
target_class = 281 # 예: 'African elephant' 클래스
attributions, delta = ig.attribute(input_tensor, target=target_class, return_convergence_delta=True)
# 속성 시각화
attr = attributions.squeeze().detach().numpy().transpose(1, 2, 0)
attr = np.mean(attr, axis=2) # 평균 기여도
plt.imshow(attr, cmap='viridis')
plt.colorbar()
plt.show()
공식 문서
Captum Integrated Gradients Documentation
결론
XAI(설명 가능한 인공지능)는 머신러닝 모델의 투명성과 신뢰성을 높이는 데 중요한 역할을 합니다. SHAP, ELI5, LIME, InterpretML, Alibi, Captum, AIX360, Skater, DALEX, What-If Tool, DeepExplain, iNNvestigate, Quince, Fairlearn, TFMA, Yellowbrick, PDPbox, SageMaker Clarify, H2O.ai ’s Driverless AI Explainability, OpenXAI, Explainaboard, IBM AI Explainability 360, DeepSHAP, Fairness Indicators, Integrated Gradients 등 다양한 XAI 라이브러리가 존재하며, 각 라이브러리는 고유한 기능과 강점을 가지고 있습니다. 모델의 유형, 데이터의 특성, 해석의 목적에 따라 적합한 XAI 도구를 선택하여 모델의 해석 가능성을 향상시킬 수 있습니다. 각 라이브러리의 공식 문서를 참고하여 더욱 심도 있는 사용법과 예제를 확인하시기 바랍니다.
추가 자료
- Yellowbrick 공식 문서: Yellowbrick Documentation
- PDPbox 공식 문서: PDPbox Documentation
- AWS SageMaker Clarify Documentation: SageMaker Clarify
- H2O.ai** Driverless AI Documentation:** H2O.ai Driverless AI
- OpenXAI GitHub: OpenXAI GitHub
- Explainaboard GitHub: Explainaboard GitHub
- IBM AI Explainability 360 Documentation: AI Explainability 360
- DeepSHAP 공식 문서: DeepSHAP Documentation
- Fairness Indicators Documentation: Fairness Indicators
- Captum Integrated Gradients Documentation: Captum Integrated Gradients 이 외에도 다양한 XAI 도구들이 지속적으로 개발되고 있으므로, 최신 정보를 확인하며 필요한 도구를 선택하는 것이 중요합니다.
-

SHAP의 간단한 개요
1.1 개별 예측 설명
SHAP 값은 개별 모델 예측을 설명하는 데 사용됩니다. 특정 예측에 대해 각 특징이 예측에 얼마나 기여했는지를 보여줍니다. 즉, 각 특징이 예측을 얼마나 증가시키거나 감소시켰는지를 알려줍니다. SHAP 값 = 예측에 대한 기여도
1.1.1 연속형 목표 변수
이 예시에서 SHAP 값은 직원의 연간 보너스를 예측하는 모델에서 가져왔습니다. y축에는 모델을 구성하는 5가지 특징이 나와 있습니다. 예를 들어 다음과 같은 특징들이 있습니다:
- 경험(experience): 경력 연수
- 학위(degree): 학위 여부 (1은 학위 있음, 0은 없음) 그림 1.1: 직원 보너스 예측을 위한 SHAP 값 이 그래프는 많은 정보를 제공합니다:
- f(x) = $201.80: 이 직원의 예측된 보너스
- E[f(x)] = $150.86: 모든 직원의 평균 예측 보너스
- 빨간색과 파란색 화살표: SHAP 값
- y축의 숫자: 특징 값
- 예를 들어, “31 = 경험”은 이 직원이 31년간의 경력을 가지고 있음을 나타냅니다. 좀 더 구체적으로 설명하면, SHAP 값은 각 특징이 평균 예측과 비교했을 때 예측에 어떻게 기여했는지를 보여줍니다. 예를 들어, 경험은 예측된 보너스를 16.91 높은 연간 보너스를 예측했습니다. 좀 더 간단하게 말하면, 학위는 예측을 $16.91만큼 증가시켰다고 할 수 있습니다.
1.1.2 범주형 목표 변수
이진 목표 변수(예: 독버섯 여부)를 예측할 때 SHAP 값은 로그 오즈(log odds)로 해석됩니다. 그림 1.2는 버섯이 독성이 있는지 먹을 수 있는지를 예측하는 모델에서 나온 결과입니다. 예를 들어, 이 버섯의 냄새는 독성 예측의 로그 오즈를 0.89만큼 증가시켰습니다. 다중 클래스 목표 변수를 예측할 때는 소프트맥스(softmax)를 사용해 해석하며, 이는 9장에서 자세히 설명됩니다.

그림 1.2: 버섯 분류를 위한 SHAP 값
1.2 전체 모델 설명
모든 예측에 대해 모든 특징에 대한 SHAP 값이 존재합니다. SHAP 값은 개별 예측에서 어떤 특징이 중요한지 알려줍니다. 7장에서는 이를 집계하는 다양한 방법을 탐구합니다. 이러한 집계를 통해 전체적으로 중요한 특징을 파악할 수 있습니다. 예를 들어, 그림 1.3은 데이터셋의 모든 인스턴스에 걸쳐 각 특징의 절대 평균 SHAP 값을 보여줍니다.

그림 1.3: 평균 SHAP 플롯 집계는 모델이 포착한 트렌드를 설명할 수도 있습니다. 예를 들어, 그림 1.4는 모든 SHAP 값을 표현한 벌집(beeswarm) 플롯입니다. 각 점을 특징 값에 따라 색칠하여 특징과 모델 예측 간의 관계를 이해할 수 있습니다. 그림 1.4: 벌집 플롯

이미지에 포함된 내용을 한글로 번역 및 정리한 내용은 다음과 같습니다:
1.3 SHAP의 응용
이 플롯들은 SHAP 패키지의 강력함을 보여줍니다. SHAP은 개별 예측을 이해하는 것뿐만 아니라 전체 모델을 이해하는 데에도 사용할 수 있습니다. 이러한 지식은 여러 용도로 사용됩니다:
- 디버깅: 잘못된 예측을 자세히 분석함으로써 어떤 특징이 오류를 유발했는지 파악할 수 있습니다. 집계된 SHAP 값을 통해 모델이 과적합(Overfitting) 또는 과소적합(Underfitting)된 부분을 확인할 수 있으며, 이를 통해 모델을 수정하고 정확도를 높일 수 있습니다.
- 사용자 친화적인 설명: 모델을 해석하는 것과 설명하는 것은 다릅니다. 종종 우리의 청중은 기술적이지 않은 경우가 많습니다. 그들의 전문성 수준에 맞춰 설명을 조정하고 어떤 특징을 설명할지 고민해야 합니다. SHAP은 이러한 설명을 시작하기에 좋은 출발점입니다.
- 데이터 탐색: 블랙박스 모델은 데이터에서 패턴을 찾는 데 탁월합니다. SHAP을 사용하면 모델이 찾은 패턴에 대해 배울 수 있습니다. 이러한 방식으로 SHAP은 데이터 탐색 도구로 변모합니다. 우리가 얻은 지식은 모델을 넘어서서 선형 모델을 위한 더 나은 특징을 만들거나 비즈니스 결정을 내리는 데 도움을 줄 수 있습니다.
이후 섹션에서는 SHAP의 이론에 대해 더 깊이 탐구합니다. 이 내용을 읽지 않더라도 SHAP 패키지를 사용할 수 있지만, 5장에서 SHAP의 한계를 학습하는 것이 중요합니다. 이를 통해 SHAP을 잘못 사용하는 것을 방지할 수 있습니다.
알겠습니다. 주어진 파일의 내용을 요약하지 않고 해석해드리겠습니다.
1. Shapley 값에 대한 이해
Shapley 값은 게임 이론에서 유래한 개념으로, 협력 게임에서 각 플레이어가 전체 결과에 기여한 공정한 몫을 계산하는 방법입니다. 이를 통해 각 플레이어가 전체 이익이나 비용에 얼마나 기여했는지를 정확하게 파악할 수 있습니다.
2. 2인 게임에서의 Shapley 값 계산
예시 상황:
- 두 명의 플레이어(플레이어 1과 플레이어 2)가 함께 Kaggle 대회에 참가하여 1등 상금 10,000달러를 획득했습니다.
- 플레이어 1은 뛰어난 하이퍼파라미터 튜닝 기술을 가지고 있어 자신이 더 큰 기여를 했다고 생각합니다.
- 두 플레이어는 시간 여행을 통해 각각 혼자 대회에 참가했을 때의 결과를 알아냅니다:
- 플레이어 1 혼자 참가: 7,500달러 획득 (2등)
- 플레이어 2 혼자 참가: 5,000달러 획득 (3등)
- 아무도 참가하지 않으면 상금은 0달러입니다. Shapley 값 계산:
- 플레이어 1의 기여도:
- 플레이어 2와 함께할 때: 상금 증가분 = 10,000달러 - 5,000달러 = 5,000달러
- 혼자 참여할 때: 상금 증가분 = 7,500달러 - 0달러 = 7,500달러
- 평균 기여도: (5,000달러 + 7,500달러) / 2 = 6,250달러
- 플레이어 2의 기여도:
- 플레이어 1과 함께할 때: 상금 증가분 = 10,000달러 - 7,500달러 = 2,500달러
- 혼자 참여할 때: 상금 증가분 = 5,000달러 - 0달러 = 5,000달러
- 평균 기여도: (2,500달러 + 5,000달러) / 2 = 3,750달러 결론:
- 플레이어 1은 6,250달러, 플레이어 2는 3,750달러를 받는 것이 Shapley 값에 따른 공정한 분배입니다.
- 두 금액의 합은 총 상금 10,000달러와 일치합니다.
3. 3인 게임에서의 Shapley 값 계산
예시 상황:
- 세 명의 플레이어가 함께 대회에 참가하여 1등 상금 10,000달러를 획득했습니다.
- 각 플레이어가 참여하는 다양한 조합에 따른 상금은 다음과 같습니다:
- 세 명 모두 참여: 10,000달러
- 두 명이 참여: 7,500달러 또는 5,000달러 (조합에 따라 다름)
- 한 명이 참여: 5,000달러 또는 0달러
- 아무도 참여하지 않음: 0달러 Shapley 값 계산 절차:
- 모든 가능한 플레이어 순열 생성:
- 총 3명의 플레이어이므로 가능한 순열은 3! = 6가지입니다.
- 예: (P1, P2, P3), (P2, P1, P3), (P3, P1, P2) 등
- 각 순열에서 플레이어의 한계 기여도 계산:
- 플레이어 1의 경우, 자신이 팀에 합류함으로써 상금이 얼마나 증가하는지 계산합니다.
- 이를 모든 순열에 대해 수행하고 평균을 내어 Shapley 값을 구합니다.
- 확률 가중치 적용:
- 각 기여도는 해당 순열이 발생할 확률로 가중치를 둡니다.
- 예를 들어, 특정 기여도가 발생하는 순열이 전체의 1/3이라면 그 기여도에 1/3을 곱합니다. 플레이어 1의 Shapley 값 계산 예시:
- 가능한 기여도와 그에 따른 확률을 계산하여 합산합니다.
- 최종적으로 플레이어 1의 Shapley 값은 5,000달러로 계산됩니다. 다른 플레이어들의 Shapley 값:
- 동일한 절차를 통해 플레이어 2와 플레이어 3의 Shapley 값을 계산하면 각각 3,750달러와 1,250달러가 됩니다.
- 세 금액의 합은 총 상금 10,000달러와 일치합니다.
4. Shapley 값의 일반화된 공식
Shapley 값은 일반적으로 다음과 같은 수식으로 표현됩니다:
- : 플레이어 의 Shapley 값
- : 전체 플레이어 집합
- : 플레이어 를 제외한 부분 집합
- : 집합 의 요소 수
- : 전체 플레이어 수
- : 집합 의 가치 또는 이익 해석:
- 분수 부분은 플레이어 가 집합 에 기여할 확률을 나타냅니다.
- 대괄호 부분은 플레이어 의 한계 기여도를 나타냅니다.
- 모든 가능한 집합 에 대해 이 값을 합산하면 플레이어 의 Shapley 값이 됩니다.
5. Shapley 값의 공정성 원칙 (공리)
Shapley 값은 다음 세 가지 공리를 만족함으로써 그 공정성을 보장합니다:
- 대칭성(Symmetry):
- 두 플레이어가 모든 상황에서 동일한 기여를 한다면, 그들의 Shapley 값은 동일해야 합니다.
- 무관 플레이어(null player):
- 어떤 집합에서도 기여도가 없는 플레이어의 Shapley 값은 0이어야 합니다.
- 추가성(Additivity):
- 두 개의 게임이 있을 때, 각 플레이어의 총 기여도는 두 게임에서의 기여도의 합과 같아야 합니다. 이러한 공리를 모두 만족하는 유일한 값이 Shapley 값이며, 이는 공정한 분배 방법으로 인정됩니다.
6. 머신러닝 모델에서의 Shapley 값 적용
Shapley 값을 머신러닝에 적용하면 각 특성이 모델의 예측에 얼마나 기여했는지를 공정하게 계산할 수 있습니다. 이는 모델 해석 가능성을 높이고, 특성의 중요도를 평가하는 데 도움이 됩니다.
- 예측 값 분해:
- 모델의 예측 값을 각 특성의 기여도로 분해하여 이해할 수 있습니다.
- 모델 해석:
- 복잡한 모델에서도 Shapley 값을 통해 각 특성의 영향력을 파악할 수 있습니다.
7. 도전 과제
주어진 3인 게임에서 플레이어 2와 플레이어 3의 Shapley 값을 직접 계산해보는 연습을 통해 이해를 높일 수 있습니다.
결론적으로, Shapley 값은 협력적인 상황에서 각 구성원의 기여도를 공정하게 평가하는 강력한 도구입니다. 이를 통해 머신러닝 모델의 예측을 해석하고, 특성의 중요도를 객관적으로 분석할 수 있습니다.
🚀내용이 좋아 “이론 레슨 1 SHAP 값의 개요” 의 영상 요약 노트를 공유합니다! 흥미로운 내용 3가지 :
- SHAP 값은 개별 모델 예측을 설명하며, 각 특성이 예측에 미친 영향을 구체적으로 보여준다.
- SHAP 값을 활용하여 데이터 탐색 및 모델 해석을 통해 모델의 작동 방식을 이해하고 비선형 관계를 찾아낼 수 있다.
- SHAP은 특성 중요도를 보완하며, 모델 디버깅과 인간 친화적 설명 제공에 유용한 도구다. https://lilys.ai/digest/1384059?s=1&nid=-1
🚀내용이 좋아 “이론 레슨 2 샤플리 값” 의 영상 요약 노트를 공유합니다! 흥미로운 내용 3가지 :
- 샤플리 값은 게임의 각 플레이어의 기여도를 기반으로 공정하게 상금을 분배하는 수학적 공식이다.
- 이 값은 모든 가능한 연합을 고려하여 각 플레이어의 한계 기여도를 가중 평균하여 계산된다.
- 샤플리 값은 효율성, 대칭성, 무플레이어 공리, 가산성의 네 가지 공리를 만족하여 공정한 가치 분배 방법으로 인정받는다. https://lilys.ai/digest/1384068?s=1&nid=-1
🚀내용이 좋아 “이론 레슨 3 머신 러닝을 위한 샤플리 값” 의 영상 요약 노트를 공유합니다! 흥미로운 내용 3가지 :
- Shapley 값은 모델 예측의 기여도를 분배하는 효과적인 방법으로, 해석 가능성을 향상시킨다.
- SHAP는 계산 속도를 향상시켜, 다양한 특성을 가진 모델에서도 빠르게 Shapley 값을 근사할 수 있게 한다.
- 여러 근사 방법이 존재하며, Kernel SHAP과 Tree SHAP은 각각의 모델 특성에 적합한 속도와 성능을 제공한다. https://lilys.ai/digest/1384079?s=1&nid=-1