[파이썬] lightgbm SHAP 값을 이용한 모델 해석

소개

모델 해석은 머신러닝 모델이 어떻게 예측을 수행하는지 이해하기 위해 중요한 작업입니다. SHAP (SHapley Additive exPlanations)은 각 특성이 모델 예측에 기여하는 정도를 해석하는 데 사용되는 방법 중 하나입니다. 이 기술은 모델 해석 및 설명이 필요한 다양한 분야에서 사용될 수 있습니다.

이 블로그 게시물에서는 Python의 lightgbm 라이브러리와 SHAP 라이브러리를 사용하여 모델의 예측을 해석하는 방법을 알아보겠습니다.

요구사항

이 튜토리얼을 따라하기 위해 다음 패키지가 필요합니다:

아래 명령을 사용하여 필요한 패키지를 설치할 수 있습니다:

pip install lightgbm shap

데이터 준비

이 예제에서는 lightgbm의 기본 자동차 데이터 세트를 사용합니다. 데이터를 불러오고 훈련 및 테스트 세트로 분할하는 코드는 다음과 같습니다:

import lightgbm as lgb
from sklearn.model_selection import train_test_split

# 데이터셋 로드
data = lgb.Dataset('auto.csv')

# 훈련 및 테스트 세트로 분할
train_x, test_x, train_y, test_y = train_test_split(data.data, data.target, test_size=0.2, random_state=42)

모델 훈련 및 해석

이제 모델을 훈련하고 SHAP 값을 이용하여 모델을 해석해 보겠습니다.

# lightgbm 모델 훈련
model = lgb.LGBMRegressor()
model.fit(train_x, train_y)

# SHAP 값을 계산
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(test_x)

위의 코드에서 생성된 shap_values는 각 특성의 SHAP 값을 포함하는 배열입니다.

해석 결과 표시

SHAP 값을 이용하여 모델을 해석하는 한 가지 방법은 SHAP Summary Plot을 통해 특성의 중요도를 시각화하는 것입니다:

import shap
shap.summary_plot(shap_values, test_x)

SHAP Summary Plot

위의 그림은 특성들에 대한 SHAP 값의 분포를 보여주며, 어떤 특성이 모델 예측에 얼마나 중요한지를 알 수 있습니다.

결론

lightgbm과 SHAP 라이브러리를 사용하여 모델을 해석하는 방법에 대해 알아보았습니다. 이를 통해 각 특성이 모델 예측에 어떻게 기여하는지 분석하고 모델의 예측을 해석할 수 있습니다. 이를 통해 모델의 예측 결과를 더욱 신뢰할 수 있고, 모델이 어떻게 작동하는지에 대한 통찰력을 얻을 수 있습니다.