목적(손실) 함수와 기본 학습기

XGBoost로 익히는 Extreme Gradient Boosting

Sergey Fogelson

Head of Data Science, TelevisaUnivision

목적 함수와 사용 이유

  • 예측값과 실제값의 차이를 수치화합니다
  • 데이터에서 추정값과 실제값의 차이를 측정합니다
  • 목표: 손실 함수를 최소화하는 모델 탐색
XGBoost로 익히는 Extreme Gradient Boosting

주요 손실 함수와 XGBoost

  • XGBoost의 손실 함수 이름:
    • reg:squarederror - 회귀 문제에 사용
    • reg:logistic - 확률 없이 결정만 필요한 분류 문제에 사용
    • binary:logistic - 결정 대신 확률이 필요할 때 사용
XGBoost로 익히는 Extreme Gradient Boosting

기본 학습기와 필요 이유

  • XGBoost는 여러 개별 모델을 결합하여 최종 예측을 생성하는 메타모델입니다
  • 개별 모델 = 기본 학습기
  • 기본 학습기를 결합하면 비선형 최종 예측이 가능해야 합니다
  • 각 기본 학습기는 데이터셋의 서로 다른 부분을 잘 학습해야 합니다
  • 기본 학습기의 두 가지 유형: 트리와 선형
XGBoost로 익히는 Extreme Gradient Boosting

트리 기본 학습기 예시: Scikit-learn API

import xgboost as xgb
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split

boston_data = pd.read_csv("boston_housing.csv")

X, y = boston_data.iloc[:,:-1],boston_data.iloc[:,-1] X_train, X_test, y_train, y_test= train_test_split(X, y, test_size=0.2, random_state=123)
xg_reg = xgb.XGBRegressor(objective='reg:squarederror', n_estimators=10, seed=123) xg_reg.fit(X_train, y_train) preds = xg_reg.predict(X_test)
XGBoost로 익히는 Extreme Gradient Boosting

트리 기본 학습기 예시: Scikit-learn API

rmse = np.sqrt(mean_squared_error(y_test,preds))

print("RMSE: %f" % (rmse))
RMSE: 129043.2314
XGBoost로 익히는 Extreme Gradient Boosting

선형 기본 학습기 예시: 학습 API 전용

import xgboost as xgb
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split

boston_data = pd.read_csv("boston_housing.csv")

X, y = boston_data.iloc[:,:-1],boston_data.iloc[:,-1]

X_train, X_test, y_train, y_test= train_test_split(X, y, test_size=0.2, 
                                                         random_state=123)

DM_train = xgb.DMatrix(data=X_train,label=y_train) DM_test = xgb.DMatrix(data=X_test,label=y_test)
params = {"booster":"gblinear","objective":"reg:squarederror"}
xg_reg = xgb.train(params = params, dtrain=DM_train, num_boost_round=10) preds = xg_reg.predict(DM_test)
XGBoost로 익히는 Extreme Gradient Boosting

선형 기본 학습기 예시: 학습 API 전용

rmse = np.sqrt(mean_squared_error(y_test,preds))

print("RMSE: %f" % (rmse))
RMSE: 124326.24465
XGBoost로 익히는 Extreme Gradient Boosting

실습해 봅시다!

XGBoost로 익히는 Extreme Gradient Boosting

Preparing Video For Download...