gdm 확장한 모델
개념: XGBoost는 gradient boosting의 한 형태로, 여러 개의 결정 트리(주로 결정 트리)를 순차적으로 학습하여 강력한 예측 모델을 만드는 고성능 앙상블 학습 기법이다.(Boosting)
각 트리는 이전 트리가 만든 오류를 줄이기 위해 학습한다. ( = 각 트리가 이전 트리의 오차를 기반으로 수정 = Gradient Descent)
<붓꽃(Iris) 데이터셋 예제>
import xgboost as xgb
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 데이터 준비: 특징(X)과 레이블(y)로 분리
data = load_iris()
X = data.data
y = data.target
# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# XGBoost 모델 생성 및 훈련
model = xgb.XGBClassifier()
model.fit(X_train, y_train)
# 테스트 데이터를 사용하여 예측을 수행
preds = model.predict(X_test)
# 평가: 정확도 출력
accuracy = accuracy_score(y_test, preds)
print("Accuracy:", accuracy)
아래는 회귀 문제를 다루는 코드로, 아이리스 데이터셋이 아닌 다른 회귀 데이터셋을 사용하는 것이 일반적이다. 예를 들어, 보스턴 주택 가격 데이터셋을 사용할 수 있다.
회귀 문제에 사용되며, 평균 제곱 오차(MSE)를 평가한다.
import xgboost as xgb
from sklearn.datasets import load_boston # 예시 데이터셋
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# 데이터 준비: 특징(X)과 레이블(y)로 분리
data = load_boston()
X = data.data
y = data.target
# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# XGBoost 모델 생성 및 훈련
xgb_model = xgb.XGBRegressor(n_estimators=100, learning_rate=0.1, max_depth=3, random_state=42)
xgb_model.fit(X_train, y_train)
# 테스트 데이터를 사용하여 예측을 수행
y_pred_xgb = xgb_model.predict(X_test)
# 평가: MSE 출력
mse_xgb = mean_squared_error(y_test, y_pred_xgb)
print(f'XGBoost 모델의 MSE: {mse_xgb}')
<1> 왜 스케일링 작업을 하지 않는가? 모델의 특성과 데이터의 특성에 따라 달라진다.
<2> XGBRegressor에서는
from sklearn.metrics import mean_squared_error를,
XGBClassifier에서는
from sklearn.metrics import accuracy_score를
사용하는게 맞는가?
맞다.
회귀 문제 (XGBRegressor)에서는 예측 성능을 평가하기 위해 MSE (Mean Squared Error)를 사용한다. 이를 위해 mean_squared_error를 가져온다.
분류 문제 (XGBClassifier)에서는 모델의 정확도를 평가하기 위해 정확도 (Accuracy)를 사용한다. 이를 위해 accuracy_score를 가져온다.
요약
XGBRegressor:
사용: mean_squared_error
XGBClassifier:
사용: accuracy_score