xgboost는 기계 학습 알고리즘 중에서도 매우 강력한 모델로 알려져 있습니다. 이러한 xgboost 모델을 평가하기 위해서는 적절한 평가 지표를 사용해야 합니다. 다행히, xgboost에는 내장 평가 지표가 포함되어 있어 사용자가 직접 평가 함수를 작성할 필요가 없습니다. 이번 블로그 포스트에서는 xgboost의 내장 평가 지표들을 소개하고, 이를 python으로 계산하는 방법을 다루려고 합니다.
1. 평가 지표 종류
xgboost는 다양한 평가 지표를 제공합니다. 몇 가지 일반적인 예시는 다음과 같습니다:
-
RMSE (Root Mean Squared Error): 회귀 문제의 평가 지표로 가장 널리 사용됩니다. 예측값과 실제값의 오차의 제곱에 대한 평균의 제곱근을 계산합니다.
-
MAE (Mean Absolute Error): 회귀 문제에서 오차의 절대값에 대한 평균을 계산합니다. RMSE와 달리 오차를 제곱하지 않으므로 이상치(Outlier)에 민감하지 않습니다.
-
Log Loss (Negative Log Likelihood): 이진 분류 문제의 평가 지표로 주로 사용됩니다. 예측값의 로그 확률과 실제값의 정답 여부에 따라 계산됩니다.
-
AUC (Area Under the Curve): 이진 분류 문제에서 모델의 민감도(Recall)와 특이도(Specificity)를 커브로 나타낸 면적을 계산합니다. 1에 가까울수록 좋은 모델입니다.
이 외에도, xgboost는 다른 유용한 평가 지표들을 지원합니다.
2. 평가 지표 계산하기
xgboost에서는 평가 지표를 계산하기 위해 eval_metric
매개변수를 사용합니다. 이를 이용하여 모델 평가를 할 수 있습니다. eval_metric
은 단일 문자열로 하나 이상의 평가 지표를 지정할 수도 있습니다. 여러 평가 지표를 지정할 경우에는 쉼표로 구분합니다.
다음은 xgboost를 사용하여 RMSE 평가 지표를 계산하는 예시 코드입니다:
import xgboost as xgb
from sklearn.metrics import mean_squared_error
# 데이터 로드
X, y = load_data()
# 데이터셋을 DMatrix 형식으로 변환
dtrain = xgb.DMatrix(X, label=y)
# 매개변수 설정
params = {
'objective': 'reg:squarederror',
'eval_metric': 'rmse'
}
# 모델 훈련
model = xgb.train(params, dtrain)
# 테스트 데이터셋 예측
y_pred = model.predict(X_test)
# 평가 지표 계산
rmse = mean_squared_error(y_test, y_pred, squared=False)
print(f"RMSE: {rmse}")
위의 코드에서 eval_metric
매개변수를 rmse
로 설정하여 RMSE 평가 지표를 계산합니다. 예측된 값과 실제 값의 RMSE를 계산하기 위해 sklearn.metrics
에서 제공하는 mean_squared_error
함수를 사용합니다.
이와 같은 방식으로 다른 평가 지표를 계산할 수도 있습니다. 예를 들어, MAE를 계산하고 싶다면 다음과 같이 코드를 수정할 수 있습니다:
from sklearn.metrics import mean_absolute_error
# ...
params = {
'objective': 'reg:squarederror',
'eval_metric': 'mae'
}
# ...
mae = mean_absolute_error(y_test, y_pred)
print(f"MAE: {mae}")
위의 코드에서는 eval_metric
을 mae
로 설정하여 MAE 평가 지표를 계산하고 있습니다. 이를 위해 mean_absolute_error
함수를 사용합니다.
3. 정리
xgboost의 내장 평가 지표를 사용하여 모델을 평가하는 방법을 알아보았습니다. RMSE, MAE, Log Loss, AUC 등 다양한 평가 지표를 활용하여 모델의 성능을 측정할 수 있습니다. 이를 통해 모델을 훈련하고 최적화하는 데 도움이 될 것입니다.