[파이썬] lightgbm 모델 해석 및 시각화 도구

lightGBM은 기계 학습에서 널리 사용되는 뛰어난 성능을 가진 경사 부스팅 프레임워크입니다. 그러나 모델이 어떻게 작동하는지 이해하고 그 결과를 해석하기 위해서는 모델을 시각화하는 작업이 필요합니다.

이 블로그 포스트에서는 Python에서 lightGBM 모델을 해석하고 시각화하기 위한 몇 가지 도구를 소개하려고 합니다.

1. 모델 해석

모델을 해석하는 것은 모델이 입력 변수에 어떻게 반응하는지 이해하는 것을 의미합니다. lightGBM에서는 다양한 기능으로 모델 해석을 제공합니다.

Feature Importance

feature_importance() 함수를 사용하여 모델의 특성 중요도를 확인할 수 있습니다. 특성 중요도는 모델이 예측을 수행할 때 각 특성의 기여도를 나타냅니다.

import lightgbm as lgb

# 모델 훈련
model = lgb.LGBMClassifier()
model.fit(X_train, y_train)

# 특성 중요도 확인
feature_importance = model.feature_importance()

SHAP Values

SHAP(SHapley Additive exPlanations) 값은 개별 특성이 모델의 예측에 얼마나 기여하는지 설명하는 데 사용됩니다. shap 라이브러리를 사용하여 SHAP 값 계산이 가능합니다.

import shap

# SHAP 값을 계산하는 함수 정의
explainer = shap.Explainer(model)
shap_values = explainer.shap_values(X)

# SHAP 값을 시각화
shap.summary_plot(shap_values, X)

2. 모델 시각화

모델의 작동 방식을 시각화하는 것은 모델을 이해하고 설명하는 데 도움이 됩니다. lightGBM은 다양한 시각화 도구를 제공합니다.

트리 시각화

plot_tree() 함수를 사용하여 모델의 트리를 시각화할 수 있습니다. 이를 통해 각 트리의 구조와 리프 노드의 예측값을 확인할 수 있습니다.

import matplotlib.pyplot as plt

# 단일 트리 시각화
lgb.plot_tree(model, tree_index=0, figsize=(20, 10), show_info=['split_gain'])

# 모든 트리 시각화
lgb.plot_tree(model, figsize=(20, 10), show_info=['split_gain'])

특성 중요도 플롯

plot_importance() 함수를 사용하여 특성 중요도를 플롯할 수 있습니다. 이를 통해 모델이 어떤 특성에 가장 많은 영향을 받는지 확인할 수 있습니다.

# 특성 중요도 플롯
lgb.plot_importance(model)

결론

Python에서 lightGBM 모델을 해석하고 시각화하는 여러 도구를 살펴보았습니다. feature importance, SHAP Values, 트리 시각화 및 특성 중요도 플롯을 사용하여 모델의 동작을 이해하고 결과를 해석할 수 있습니다. 이러한 도구들은 모델 개발 및 디버깅, 비즈니스 인사이트 도출에 유용하게 사용될 수 있습니다.