[파이썬] lightgbm 그리드 탐색 및 랜덤 탐색 활용

LightGBM은 경량 부스팅 알고리즘으로, 기계 학습 모델을 빠르게 구축하고 최적화할 수 있는 강력한 도구입니다. 그리드 탐색(Grid Search) 및 랜덤 탐색(Random Search)은 LightGBM의 매개 변수 튜닝에 유용한 방법입니다. 이 블로그 포스트에서는 Python에서 LightGBM을 사용하여 그리드 탐색 및 랜덤 탐색을 활용하는 방법에 대해 알아보겠습니다.

그리드 탐색은 사전에 지정된 매개 변수 그리드에서 모든 조합을 시도하여 가장 성능이 우수한 조합을 선택하는 방법입니다. LightGBM에서는 LGBMClassifierLGBMRegressor 클래스의 GridSearchCV 함수를 사용하여 그리드 탐색을 수행할 수 있습니다. 아래는 LightGBM 그리드 탐색의 예시 코드입니다.

from lightgbm import LGBMClassifier
from sklearn.model_selection import GridSearchCV

# 학습 데이터와 타겟 변수를 준비한다.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# LightGBM 분류 모델을 초기화한다.
lgbm = LGBMClassifier()

# 그리드 탐색의 매개 변수 그리드를 지정한다.
param_grid = {'num_leaves': [31, 63, 127],
              'learning_rate': [0.01, 0.05, 0.1],
              'n_estimators': [100, 200, 300]}

# 그리드 탐색을 수행한다.
grid_search = GridSearchCV(lgbm, param_grid, cv=5)
grid_search.fit(X_train, y_train)

# 가장 우수한 매개 변수 조합을 선택한다.
best_params = grid_search.best_params_
print("Best parameters:", best_params)

위 코드에서는 num_leaves, learning_rate, n_estimators와 같은 매개 변수 그리드를 설정하고, GridSearchCV 함수를 사용하여 모든 조합을 시도합니다. 최적의 매개 변수 조합을 선택하기 위해 교차 검증을 수행합니다.

랜덤 탐색은 사전에 지정된 매개 변수 범위에서 랜덤하게 선택된 매개 변수 조합을 시도하여 성능을 평가하고, 가장 우수한 조합을 선택하는 방법입니다. LightGBM에서는 LGBMClassifierLGBMRegressor 클래스의 RandomizedSearchCV 함수를 사용하여 랜덤 탐색을 수행할 수 있습니다. 아래는 LightGBM 랜덤 탐색의 예시 코드입니다.

from lightgbm import LGBMClassifier
from sklearn.model_selection import RandomizedSearchCV

# 학습 데이터와 타겟 변수를 준비한다.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# LightGBM 분류 모델을 초기화한다.
lgbm = LGBMClassifier()

# 랜덤 탐색의 매개 변수 범위를 설정한다.
param_dist = {'num_leaves': [10, 50, 100, -1],
              'learning_rate': [0.001, 0.01, 0.1],
              'n_estimators': [100, 200, 300]}

# 랜덤 탐색을 수행한다.
random_search = RandomizedSearchCV(lgbm, param_dist, cv=5)
random_search.fit(X_train, y_train)

# 가장 우수한 매개 변수 조합을 선택한다.
best_params = random_search.best_params_
print("Best parameters:", best_params)

위 코드에서는 num_leaves, learning_rate, n_estimators와 같은 매개 변수 범위를 설정하고, RandomizedSearchCV 함수를 사용하여 랜덤하게 매개 변수 조합을 시도합니다. 최적의 매개 변수 조합을 선택하기 위해 교차 검증을 수행합니다.

결론

LightGBM의 그리드 탐색(Grid Search) 및 랜덤 탐색(Random Search)은 모델의 성능을 향상시키기 위해 매개 변수 튜닝을 수행하는 데 유용한 도구입니다. 그리드 탐색은 가능한 모든 조합을 시도하므로 많은 실행 시간이 소요될 수 있지만, 랜덤 탐색은 매개 변수 범위 내에서 랜덤하게 선택된 조합을 시도하여 보다 효율적으로 최적의 조합을 찾을 수 있습니다. 데이터에 가장 적합한 매개 변수 조합을 찾고, 모델의 성능을 극대화하기 위해 그리드 탐색 및 랜덤 탐색을 적절하게 활용해보세요.