[파이썬] lightgbm 실제 사례 및 애플리케이션 소개

소개

LightGBM은 Microsoft에서 개발한 Gradient Boosting Framework로, 높은 속도와 효율성을 자랑합니다. 특히 대규모 데이터셋에 대해 빠른 속도와 좋은 예측 성능을 제공하는 것이 특징입니다. 이러한 이점으로 인해 LightGBM은 현업에서 다양한 실제 사례 및 애플리케이션에 널리 사용되고 있습니다.

이번 글에서는 LightGBM을 사용하여 어떻게 실제 문제에 적용할 수 있는지 몇 가지 예시로 살펴보겠습니다.

예제 1: 클릭 예측 모델

온라인 광고 플랫폼에서는 광고 클릭률을 예측하는 모델이 매우 중요합니다. 이를 위해 LightGBM은 다양한 기능을 제공합니다.

가장 일반적인 사용 사례는 먼저 데이터를 전처리하고, 카테고리형 변수를 원-핫 인코딩하거나 레이블 인코딩합니다. 그런 다음, LightGBM의 분산 학습 기능을 사용하여 대규모 데이터셋에 대한 모델을 학습합니다. 마지막으로, 학습된 모델을 사용하여 새로운 광고에 대한 클릭률을 예측할 수 있습니다.

import lightgbm as lgb
import pandas as pd
from sklearn.model_selection import train_test_split

# 데이터 불러오기
data = pd.read_csv('advertising_data.csv')

# 데이터 전처리 및 분할
X = data.drop('clicked', axis=1)
y = data['clicked']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# LightGBM 데이터셋 생성
train_data = lgb.Dataset(X_train, label=y_train)
test_data = lgb.Dataset(X_test, label=y_test)

# LightGBM 모델 학습
params = {
    'boosting_type': 'gbdt',
    'objective': 'binary',
    'metric': 'binary_logloss',
    'num_leaves': 31,
    'learning_rate': 0.05
}
model = lgb.train(params, train_data, valid_sets=[test_data])

# 새로운 광고 예측
new_ad = pd.DataFrame({'feature1': [10], 'feature2': ['high'], 'feature3': [0.5]})
prediction = model.predict(new_ad)

위 예제에서는 LightGBM의 lgb.Dataset을 사용하여 학습 데이터셋과 테스트 데이터셋을 생성하고, lgb.train 함수를 사용하여 모델을 학습합니다. 마지막으로, 학습된 모델을 사용하여 새로운 광고에 대한 클릭률을 예측합니다.

예제 2: 이미지 분류 모델

LightGBM은 주로 테이블 형태의 데이터에 적용되지만, 이미지 분류와 같은 다른 유형의 문제에도 사용될 수 있습니다. 이미지를 벡터로 변환한 후 LightGBM 모델에 입력할 수 있습니다.

import lightgbm as lgb
import numpy as np
from sklearn.model_selection import train_test_split

# 이미지 데이터 불러오기
data = np.load('image_data.npy')

# 데이터 전처리
X = data['images']
X = X.reshape(X.shape[0], -1)
y = data['labels']

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

# LightGBM 데이터셋 생성
train_data = lgb.Dataset(X_train, label=y_train)
test_data = lgb.Dataset(X_test, label=y_test)

# LightGBM 모델 학습
params = {
    'boosting_type': 'gbdt',
    'objective': 'multiclass',
    'num_class': 10,
    'metric': 'multi_logloss',
    'num_leaves': 31,
    'learning_rate': 0.05
}
model = lgb.train(params, train_data, valid_sets=[test_data])

# 새로운 이미지 예측
new_image = np.random.rand(1, 28, 28)
new_image = new_image.reshape(1, -1)
prediction = model.predict(new_image)

위 예제에서는 image_data.npy로부터 이미지 데이터를 불러온 후, 전처리합니다. 이미지 데이터는 3차원 배열로 이루어져 있기 때문에 reshape 함수를 사용하여 2차원 벡터로 변환합니다. 나머지 과정은 예제 1과 동일하게 모델을 학습하고 새로운 이미지에 대한 예측을 수행합니다.

결론

LightGBM은 높은 속도와 효율성으로 인해 다양한 실제 사례 및 애플리케이션에서 사용되고 있습니다. 예제 1과 예제 2에서는 LightGBM을 이용하여 광고 클릭률 예측과 이미지 분류 문제에 적용하는 방법을 살펴보았습니다. 하지만 이 외에도 다양한 분야에서 LightGBM을 활용할 수 있으며, 데이터 특성과 문제에 적합한 파라미터 조정과 전처리 방법을 고려하는 것이 중요합니다.