[파이썬] lightgbm의 분류 문제 활용

LightGBM은 Microsoft에서 개발한 고성능 그래디언트 부스팅 프레임워크로, 분류 문제를 해결하는 데에 매우 효과적입니다. 이번 블로그 포스트에서는 Python을 사용하여 lightgbm을 활용해 분류 문제를 해결하는 방법을 알아보겠습니다.

데이터 준비

먼저, 분류 문제를 해결하기 위해 데이터를 준비해야 합니다. 예를 들어, 유방암 데이터셋을 사용해보겠습니다. 해당 데이터셋은 sklearn 라이브러리의 load_breast_cancer 함수를 통해 쉽게 불러올 수 있습니다.

import lightgbm as lgb
from sklearn.datasets import load_breast_cancer

# 데이터 로드
data = load_breast_cancer()
X = data.data
y = data.target

데이터 분할

데이터를 학습용과 테스트용으로 분할해야 합니다. 사이킷런의 train_test_split 함수를 사용하여 데이터를 분할할 수 있습니다.

from sklearn.model_selection import train_test_split

# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

모델 학습

이제 데이터를 분할했으므로, lightgbm 모델을 학습시킬 차례입니다. LightGBM 모델을 정의하고, fit() 메서드를 호출하여 모델을 학습시킬 수 있습니다.

# 모델 인스턴스화
model = lgb.LGBMClassifier()

# 모델 학습
model.fit(X_train, y_train)

예측 및 평가

모델을 학습시킨 후에는 테스트 데이터를 사용하여 예측을 수행하고, 모델의 성능을 평가해야 합니다.

# 예측
y_pred = model.predict(X_test)

# 성능 평가
accuracy = (y_pred == y_test).mean()
print(f"Accuracy: {accuracy}")

하이퍼파라미터 튜닝

마지막으로, LightGBM의 성능을 더욱 향상시키기 위해 하이퍼파라미터를 조정할 수 있습니다. GridSearchCV를 사용하여 최적의 하이퍼파라미터를 찾을 수 있습니다.

from sklearn.model_selection import GridSearchCV

# 하이퍼파라미터 그리드 준비
param_grid = {
    'num_leaves': [31, 63, 127],
    'learning_rate': [0.05, 0.1, 0.2],
    'n_estimators': [50, 100, 200]
}

# 그리드 서치
grid_search = GridSearchCV(model, param_grid, cv=3)
grid_search.fit(X_train, y_train)

# 최적의 모델로 재학습
best_model = grid_search.best_estimator_
best_model.fit(X_train, y_train)

이제 LightGBM을 사용하여 분류 문제를 해결하는 방법에 대해 알아보았습니다. 이를 통해 빠르고 강력한 모델을 구축할 수 있으며, 데이터의 특성에 따라 성능을 더욱 향상시킬 수 있습니다. 다음은 여러분이 다양한 데이터셋에서 LightGBM을 활용해보시기를 바랍니다.