[파이썬] lightgbm과 `scikit-learn` 연동

LightGBM은 효율적인 그래디언트 부스팅 트리 알고리즘을 구현한 머신 러닝 라이브러리입니다. 이 라이브러리는 고성능을 자랑하며, 대용량 데이터에서도 빠른 학습과 예측 속도를 제공합니다. 이번 블로그 포스트에서는 LightGBM과 scikit-learn을 함께 사용하는 방법에 대해 알아보겠습니다.

LightGBM 설치하기

LightGBM을 사용하려면 우선 설치해야 합니다. pip를 사용하여 쉽게 설치할 수 있습니다.

pip install lightgbm

scikit-learn과 LightGBM 연동하기

scikit-learn은 많은 머신 러닝 알고리즘을 제공하는 파이썬 라이브러리입니다. scikit-learn을 사용하면 데이터 전처리, 모델 학습, 예측 등 다양한 기능을 손쉽게 구현할 수 있습니다. LightGBM도 scikit-learn과 연동하여 사용할 수 있습니다.

LightGBM과 scikit-learn을 연동하기 위해서는 LGBMRegressor 또는 LGBMClassifier와 같은 LightGBM의 RegressorClassifier 클래스를 사용합니다. 이 클래스들은 scikit-learn의 RegressorClassifier 클래스와 같은 인터페이스를 제공하여 손쉽게 사용할 수 있도록 해줍니다.

from lightgbm import LGBMRegressor
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split

# 데이터 로드
X, y = load_data()

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

# LightGBM 모델 생성
model = LGBMRegressor()

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

# 검증 데이터에 대한 예측
y_pred = model.predict(X_valid)

# 검증 데이터에 대한 평가
mse = mean_squared_error(y_valid, y_pred)
print("Mean Squared Error:", mse)

위의 예제 코드에서는 데이터를 로드하고, 데이터를 학습용과 검증용으로 분할한 후 LGBMRegressor 객체를 생성하고 모델을 학습시킵니다. 그리고 검증 데이터에 대한 예측을 수행하고 평가 지표로 평균 제곱 오차(Mean Squared Error, MSE)를 계산하여 출력합니다.

하이퍼파라미터 튜닝

LightGBM은 많은 하이퍼파라미터를 제공하여 모델의 성능을 튜닝할 수 있습니다. scikit-learn의 GridSearchCVRandomizedSearchCV를 사용하여 하이퍼파라미터 튜닝을 수행할 수 있습니다.

from lightgbm import LGBMRegressor
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split, GridSearchCV

# 데이터 로드
X, y = load_data()

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

# LightGBM 모델 생성
model = LGBMRegressor()

# 하이퍼파라미터 그리드 설정
param_grid = {
    'learning_rate': [0.1, 0.01],
    'n_estimators': [100, 200],
    'max_depth': [5, 10]
}

# 그리드 서치를 사용한 하이퍼파라미터 튜닝
grid_search = GridSearchCV(model, param_grid, scoring='neg_mean_squared_error', cv=5)
grid_search.fit(X_train, y_train)

# 최적 모델의 예측
best_model = grid_search.best_estimator_
y_pred = best_model.predict(X_valid)

# 검증 데이터에 대한 평가
mse = mean_squared_error(y_valid, y_pred)
print("Mean Squared Error (Best Model):", mse)

위의 예제 코드에서는 GridSearchCV를 사용하여 하이퍼파라미터 그리드 설정과 최적 모델 탐색을 수행합니다. 모델 평가에는 평균 제곱 오차를 사용하고, 교차 검증을 5회로 설정하여 수행합니다.

결론

이번 포스트에서는 LightGBM과 scikit-learn을 연동하여 머신 러닝 모델을 학습하고 예측하는 방법에 대해 알아보았습니다. LightGBM의 효율적인 학습 및 예측 속도와 scikit-learn의 풍부한 기능을 함께 활용하면 다양한 머신 러닝 태스크를 보다 쉽고 빠르게 처리할 수 있습니다.