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

XGBoost는 강력한 머신 러닝 알고리즘으로서 특히 트리 기반 앙상블 모델을 훈련시키는데 많이 사용됩니다. 하지만 XGBoost 모델을 이해하고 해석하는 것은 종종 어려울 수 있습니다. 이를 위해 SHAP(SHapley Additive exPlanations) 값은 XGBoost 모델을 해석하고 변수의 중요도를 파악하는 데 도움이 됩니다.

SHAP 값은 변수들이 예측값에 얼마나 기여하는지를 나타냅니다. 이러한 값은 실제 데이터에서 변수의 값을 조작하여 예측값에 미치는 영향을 확인하는 데 유용합니다.

SHAP 값의 계산

SHAP 값은 SHAP 라이브러리를 사용하여 계산할 수 있습니다. 다음과 같이 SHAP 라이브러리를 설치합니다.

pip install shap

다음으로, XGBoost 모델을 만들고 SHAP 값을 계산해보겠습니다. 먼저 필요한 라이브러리를 임포트합니다.

import xgboost as xgb
import shap

이제 XGBoost 모델을 훈련하고 SHAP 값 계산에 필요한 데이터를 로드합니다.

# 데이터 로드
train_X, train_y = shap.datasets.boston()

# XGBoost 모델 학습
model = xgb.XGBRegressor()
model.fit(train_X, train_y)

실제로 SHAP 값을 계산하기 위해서는 모델과 데이터를 SHAP로 래핑해야 합니다.

explainer = shap.Explainer(model)
shap_values = explainer.shap_values(train_X)

위의 코드를 실행하면 shap_values 변수에 SHAP 값이 저장됩니다.

SHAP 값 해석

SHAP 값을 시각화하여 변수의 중요도를 파악하는 것이 가장 일반적인 방법입니다. 다음과 같이 SHAP 값을 사용하여 변수의 영향력을 그래프 형태로 확인할 수 있습니다.

shap.summary_plot(shap_values, train_X)

또는 각 변수의 SHAP 값과 실제 변수 값을 산점도로 표현할 수도 있습니다.

shap.summary_plot(shap_values, train_X, plot_type="scatter")

이 외에도 SHAP 값은 다양한 방식으로 활용할 수 있으며, 모델의 예측에 기여하는 변수와 변수 값 사이의 상호작용을 파악할 수도 있습니다.

결론

XGBoost 모델의 해석은 중요한 작업입니다. SHAP 값을 계산하여 모델의 변수 중요도를 알 수 있다면, 모델의 동작을 이해하고 더 나은 예측 결과를 얻을 수 있습니다. SHAP 라이브러리를 사용하여 XGBoost 모델을 해석해보세요!