XGBoost의 정규화와 기본 학습기

XGBoost로 익히는 Extreme Gradient Boosting

Sergey Fogelson

Head of Data Science, TelevisaUnivision

XGBoost의 정규화

  • 정규화는 모델 복잡도를 제어합니다
  • 정확하면서도 최대한 단순한 모델이 목표입니다
  • XGBoost의 정규화 파라미터:
    • gamma - 분할 발생에 허용되는 최소 손실 감소량
    • alpha - 리프 가중치에 대한 L1 정규화, 값이 클수록 정규화 강도 증가
    • lambda - 리프 가중치에 대한 L2 정규화
XGBoost로 익히는 Extreme Gradient Boosting

XGBoost L1 정규화 예제

import xgboost as xgb
import pandas as pd
boston_data = pd.read_csv("boston_data.csv")
X,y = boston_data.iloc[:,:-1],boston_data.iloc[:,-1]

boston_dmatrix = xgb.DMatrix(data=X,label=y) params={"objective":"reg:squarederror","max_depth":4}
l1_params = [1,10,100] rmses_l1=[]
for reg in l1_params: params["alpha"] = reg cv_results = xgb.cv(dtrain=boston_dmatrix, params=params,nfold=4, num_boost_round=10,metrics="rmse",as_pandas=True,seed=123) rmses_l1.append(cv_results["test-rmse-mean"].tail(1).values[0])
print("Best rmse as a function of l1:") print(pd.DataFrame(list(zip(l1_params,rmses_l1)), columns=["l1","rmse"]))
Best rmse as a function of l1:
        l1          rmse
    0    1  69572.517742
    1   10  73721.967141
    2  100  82312.312413
XGBoost로 익히는 Extreme Gradient Boosting

XGBoost의 기본 학습기

  • 선형 기본 학습기:
    • 선형 항의 합
    • 부스팅 모델은 선형 모델의 가중합 (따라서 선형)
    • 거의 사용되지 않음
  • 트리 기본 학습기:
    • 의사결정 트리
    • 부스팅 모델은 의사결정 트리의 가중합 (비선형)
    • XGBoost에서 거의 독점적으로 사용
XGBoost로 익히는 Extreme Gradient Boosting

길이가 같은 여러 리스트로 DataFrame 생성하기

  • pd.DataFrame(list(zip(list1,list2)),columns=["list1","list2"]))
  • zip은 병렬 값의 generator를 생성합니다:
    • zip([1,2,3],["a","b""c"]) = [1,"a"],[2,"b"],[3,"c"]
    • generators는 DataFrame 객체에서 사용하기 전에 완전히 인스턴스화되어야 합니다
  • list()는 제너레이터 전체를 인스턴스화하며, 이를 DataFrame에 전달하면 전체 표현식이 변환됩니다
XGBoost로 익히는 Extreme Gradient Boosting

연습해 봅시다!

XGBoost로 익히는 Extreme Gradient Boosting

Preparing Video For Download...