[파이썬] xgboost 분류 문제에서의 클래스 가중치 설정

XGBoost는 강력하고 인기있는 그래디언트 부스팅 알고리즘입니다. 이 알고리즘은 자동으로 클래스 불균형 문제를 처리합니다. 그러나 때로는 클래스 간의 중요도가 다를 때 클래스 가중치를 사용하여 모델 학습을 개선할 수 있습니다.

XGBoost에서 클래스 가중치를 설정하는 방법을 알아보겠습니다.

클래스 가중치 설정하기

첫 번째로, 필요한 라이브러리와 데이터를 불러오는 과정을 진행합니다.

import xgboost as xgb
import pandas as pd

# 데이터 불러오기
data = pd.read_csv('data.csv')
X = data.iloc[:,:-1]  # 독립 변수
y = data.iloc[:,-1]   # 종속 변수

다음으로, 각 클래스에 대한 가중치를 지정합니다. 클래스 간의 상대적인 중요도에 따라 가중치를 설정합니다. 상대적으로 중요한 클래스에는 더 높은 가중치를 할당하고, 상대적으로 덜 중요한 클래스에는 낮은 가중치를 할당합니다.

# 클래스 가중치 설정
class_weights = {0: 1, 1: 2, 2: 3}

이제 XGBoost 분류기를 초기화하고 클래스 가중치를 설정합니다.

# XGBoost 분류기 초기화
clf = xgb.XGBClassifier()

# 클래스 가중치 설정
clf.set_params(class_weights=class_weights)

이제 XGBoost 분류기를 학습시킬 때 클래스 가중치가 고려됩니다. 훈련 데이터에 대한 모델 학습을 진행합니다.

# 모델 학습
clf.fit(X, y)

가중치가 고려된 클래스 분류를 통해 모델의 예측력이 향상될 수 있습니다.

결론

XGBoost를 사용하여 분류 문제를 해결할 때 클래스 간의 중요도가 다를 경우 클래스 가중치 설정을 사용하여 모델을 개선할 수 있습니다. 이를 통해 모델은 클래스 간의 불균형을 고려하고, 더 정확한 예측을 수행할 수 있습니다.