[파이썬] lightgbm 데이터 스케일링 및 정규화 전략

LightGBM은 가볍고 빠른 그래디언트 부스팅 프레임워크로, 대용량 데이터셋에서 높은 예측 성능을 제공합니다. 하지만, LightGBM 모델을 학습할 때, 데이터의 스케일링과 정규화는 매우 중요한 요소입니다. 이번 포스트에서는 LightGBM을 사용할 때 데이터 스케일링과 정규화를 위한 몇 가지 전략에 대해 알아보겠습니다.

1. 표준화 (Standardization)

데이터를 표준화하는 방법은 각 feature의 평균을 0으로, 표준편차를 1로 만드는 것입니다. 이 방법은 feature의 분포가 가우시안 분포를 따를 때 가장 효과적입니다. LightGBM에서는 StandardScaler 클래스를 사용하여 데이터를 표준화할 수 있습니다.

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

2. 정규화 (Normalization)

데이터의 스케일을 0과 1 사이로 조정하는 방법을 정규화라고 합니다. 이 방법은 feature의 분포가 정규분포를 따르지 않거나, 이상치가 있는 경우에 효과적입니다. LightGBM에서는 MinMaxScaler 클래스를 사용하여 데이터를 정규화할 수 있습니다.

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

3. 로그 변환 (Log Transformation)

분포가 치우친 데이터의 경우 로그 변환을 통해 데이터의 분포를 조정할 수 있습니다. 이를 통해 LightGBM 모델이 더 잘 학습할 수 있습니다.

import numpy as np

X_train_log = np.log1p(X_train)
X_test_log = np.log1p(X_test)

4. PCA (Principal Component Analysis)

데이터의 차원을 축소하는 방법으로 PCA를 사용할 수 있습니다. PCA는 feature 간의 상관관계를 고려하여 주성분(principal component)을 추출하고, 이를 사용하여 데이터를 변환합니다. LightGBM에서는 PCA를 사용하는 방법에 대한 내장 지원은 없지만, sklearn.decomposition 라이브러리를 활용하여 PCA를 적용할 수 있습니다.

from sklearn.decomposition import PCA

pca = PCA(n_components=0.95)  # 95%의 설명력을 가지는 주성분을 선택
X_train_pca = pca.fit_transform(X_train)
X_test_pca = pca.transform(X_test)

5. 결측치 처리 (Handling Missing Values)

데이터셋에 결측치가 있을 경우 LightGBM이 결측값을 처리하는 방식을 적절히 선택해야 합니다. NaN, None 등의 결측값을 처리하기 위해 LightGBM에서 제공하는 set_missing_value 메서드를 사용할 수 있습니다.

import lightgbm as lgb

pred = np.random.randn(num_data)  # 결측치를 예측한 값
d_train = lgb.Dataset(X_train, label=y_train)
d_train.set_missing_value(pred)

데이터의 스케일링과 정규화는 LightGBM 모델의 학습 성능을 향상시킬 수 있는 중요한 단계입니다. 이러한 전략들을 적절히 사용하여 데이터를 전처리하고, LightGBM 모델을 구축하여 예측 성능을 높이십시오.