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, 트리 시각화 및 특성 중요도 플롯을 사용하여 모델의 동작을 이해하고 결과를 해석할 수 있습니다. 이러한 도구들은 모델 개발 및 디버깅, 비즈니스 인사이트 도출에 유용하게 사용될 수 있습니다.