LightGBM은 경량화된 Gradient Boosting 프레임워크로, 빠른 속도와 높은 정확도를 제공합니다. 이번 블로그 포스트에서는 LightGBM을 사용하여 비용 민감 모델링을 수행하는 방법을 알아보겠습니다. 비용 민감 모델링은 분류 모델의 출력에 따라 발생하는 비용을 고려하여 모델을 조정하는 기법입니다. 즉, 정확도 뿐만 아니라 비용 최적화를 통해 모델을 구성합니다.
데이터셋 준비
먼저, 비용 민감 모델링을 위한 데이터셋을 준비해야 합니다. 이 예제에서는 신용카드 사기 탐지 문제를 다루겠습니다. 데이터셋에는 사기 거래와 정상 거래가 포함되어 있으며, 사기 거래의 비용이 높기 때문에 이를 민감하게 처리해야 합니다.
import pandas as pd
from sklearn.model_selection import train_test_split
# 데이터셋 로드
data = pd.read_csv('credit_card_dataset.csv')
# Features와 Labels 분리
X = data.drop('Class', axis=1)
y = data['Class']
# 학습 데이터와 테스트 데이터로 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
LightGBM 모델 학습
이제 LightGBM 모델을 학습시켜보겠습니다. 비용 민감 모델링을 위해 scale_pos_weight
파라미터를 사용할 것입니다. 이 파라미터는 클래스 불균형 문제에서 비용을 조절하는 데 사용됩니다. 사기 거래의 비율이 낮기 때문에 이를 보상하기 위해 scale_pos_weight
값을 증가시킵니다.
import lightgbm as lgb
# LightGBM 학습용 데이터셋 생성
lgb_train = lgb.Dataset(X_train, y_train)
# LightGBM 모델 학습
params = {'objective': 'binary',
'metric': 'auc',
'scale_pos_weight': sum(y_train == 0) / sum(y_train == 1)} # 비용 민감 모델링
model = lgb.train(params, lgb_train)
모델 평가
학습한 LightGBM 모델을 사용하여 테스트 데이터셋의 성능을 평가해보겠습니다. 비용 민감 모델링의 목표는 사기 거래를 가능한 한 잘 탐지하는 것이므로, 이를 평가하는 지표로는 정확도, 재현율, 정밀도 등이 있습니다.
from sklearn.metrics import accuracy_score, recall_score, precision_score
# LightGBM 모델 예측
y_pred = model.predict(X_test)
y_pred_class = [1 if prob >= 0.5 else 0 for prob in y_pred]
# 평가 지표 계산
accuracy = accuracy_score(y_test, y_pred_class)
recall = recall_score(y_test, y_pred_class)
precision = precision_score(y_test, y_pred_class)
print(f'정확도: {accuracy:.4f}')
print(f'재현율: {recall:.4f}')
print(f'정밀도: {precision:.4f}')
결과 분석
비용 민감 모델링을 적용한 LightGBM 모델을 통해 얻은 결과를 분석해봅시다. 결과에 따라 모델의 성능을 평가하고 적절한 조치를 취할 수 있습니다. 또한, scale_pos_weight
값을 조정하여 비용 민감도를 더욱 세밀하게 조절할 수도 있습니다.
비용 민감 모델링은 사기 탐지, 의료 진단, 보험 등 다양한 분야에서 유용하게 활용될 수 있습니다. LightGBM을 통해 이러한 비용 민감 모델링을 적용하여 더욱 효과적인 예측 모델을 구축할 수 있습니다.
이상으로 LightGBM을 이용한 비용 민감 모델링에 대해 알아보았습니다. 비용을 고려한 모델링을 통해 더욱 정확하고 효과적인 예측 모델을 개발할 수 있습니다.