[파이썬] lightgbm의 피처 중요도

LightGBM은 Gradient Boosting 기반의 머신 러닝 알고리즘으로, 빠른 학습 속도와 높은 예측 성능으로 알려져 있습니다. 이번 포스트에서는 LightGBM을 사용하여 피처 중요도를 계산하는 방법을 살펴보겠습니다.

1. LightGBM 설치

먼저, LightGBM 라이브러리를 설치해야 합니다. pip를 사용하여 설치할 수 있습니다.

!pip install lightgbm

2. 데이터 불러오기 및 전처리

LightGBM을 사용하기 위해서는 데이터를 불러오고 전처리하는 과정이 필요합니다. 이 단계에서는 간단한 예제를 위해 Iris 데이터셋을 사용하겠습니다. 아래 코드로 데이터를 불러오고 필요한 전처리 작업을 수행합니다.

import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# Iris 데이터셋 불러오기
data = load_iris()

# Features와 Labels로 데이터 분리
X = pd.DataFrame(data=data.data, columns=data.feature_names)
y = pd.Series(data=data.target)

# 학습 데이터와 테스트 데이터로 분리
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

3. LightGBM 모델 학습 및 피처 중요도 계산

필요한 전처리 작업을 마친 후, LightGBM 모델을 학습시키고 피처 중요도를 계산할 수 있습니다. 아래 코드로 LightGBM 모델을 학습시키고 피처 중요도를 계산해보겠습니다.

import lightgbm as lgb

# LightGBM 데이터셋 생성
lgb_train = lgb.Dataset(X_train, y_train)

# LightGBM 모델 학습
params = {
    'objective': 'multiclass',
    'num_class': 3
}
model = lgb.train(params, lgb_train, num_boost_round=100)

# 피처 중요도 출력
feature_importance = model.feature_importance()
feature_names = X.columns
for feature_name, importance in zip(feature_names, feature_importance):
    print(f"{feature_name}: {importance}")

위 코드에서는 lgb.Dataset을 사용하여 LightGBM 모델에 필요한 데이터셋을 생성하고, lgb.train을 호출하여 모델을 학습시킵니다. 마지막으로 feature_importance 메소드를 사용하여 피처 중요도를 계산하고 출력합니다.

결과 예시

실행 결과로 아래와 같이 각 피처의 중요도가 출력됩니다.

sepal length (cm): 50
sepal width (cm): 70
petal length (cm): 120
petal width (cm): 90

결과를 통해, petal length가 가장 중요한 피처라는 것을 알 수 있습니다.

결론

이번 포스트에서는 LightGBM을 사용하여 피처 중요도를 계산하는 방법을 알아보았습니다. 빠른 학습 속도와 높은 예측 성능으로 인해 LightGBM은 피처 중요도 계산에 유용한 도구입니다. 피처 중요도를 통해 머신 러닝 모델이 어떤 피처에 가장 영향을 많이 받는지를 파악할 수 있으며, 이를 통해 모델을 해석하고 개선하는 데 도움을 줄 수 있습니다.