1. 정의
- GBT모델과 비슷하지만 GBT 모델에 병렬 처리, 하드웨어 최적화, 과적합 규제 페널티 등의 개념을 도입하여 최적화한 모델이다.
- Xgboost는 Gradient Tree boosting이다.
Xgboost의 기본 학습기는 의사결정나무로 하며 gradient를 이용하여 GBT의 약점을 보완한다.
1-1 Boosting의 주요 아이디어
- 여러 개의 learning 모델을 순차적으로 구축하여 최종적으로 합침(앙상블)
- 사용하는 모델 : 단순 모델 -이진 분류기에서 정확도가 0.5보다 조금 좋은 모델
- 순차적 -> 모델 구축에 순서를 고려
- 각 단계에서 새로운 base learner를 학습하여 이전 단계의 base learner의 단점 보완
- 각 단계를 거치면서 모델이 점차 강해짐 -> boosting
- boosting 알고리즘 종류
1. Adaptive boosting(Adaboost)
2. Gradient boosting machines(GBM)
3. Xgboost
4. Light gradient boost machines(Light GBM)
5. Catboost
1-2 single vs bagging vs boosting
single : 하나의 트레이닝 데이터에서 모델 만드는것
bagging: 하나의 트레이닝 데이터에서 여러 개의 샘플을 만들어 그로부터 각각 모델을 구하고 가중치를 가한 것(랜덤포레스트)
boosting: 하나의 트레이닝 샘플이 있으면 모델을 만들고 거기로부터 새로운 모델을 또 만들고 가중치를 계속 업데이트하여 모델들을 다 더한것
2. 특징
- Bossting: 여러 개의 약한 학습기(주로 결정 트리)를 결합하여 강력한 예측 모델 생성
- Regularization: 과적합을 방지하기 위해 L1 또는 L2 정규화 지원
- Paraller processing: 트리의 분할을 병렬로 처리하여 학습 속도를 크게 향상
- Scalling : 대규모 데이터셋을 처리할 수 있도록 설계
3. 작동 원리
1. 초기화: 초기 예측값 설정
2. 잔여 오차 계산: 현재 모델의 예측값과 실제 값 간의 오차
3. 새로운 트리 학습: 잔여 오차를 예측하는 새로운 결정 트리 학습
4. 모델 업데이트: 새로 학습한 트리를 기존 모델에 추가하여 예측값 없데이트
5. 반복
4. 주요 하이퍼파라미터
- n_estimators: 생성할 트리의 수
- learning_rate : 각 트리의 기여도를 조절하는 학습률
- max_depth: 각 결정 트리의 최대 깊이
- subsample: 각 트리를 학습할 때 사용할 샘플의 비율
- colsample_bytree: 각 트리를 학습할 때 사용할 특성의 비율
5. 예제(출처:https://riverzayden.tistory.com/17)
보스턴 주택 가격 데이터셋을 로드하여 Xgboost 알고리즘으로 모델 성능 평가
from sklearn.datasets import load_boston
import xgboost
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.metrics import explained_variance_score
boston = load_boston()
X_train, X_test, y_train, y_test = train_test_split(boston.data, boston.target ,test_size=0.1)
xgb_model = xgboost.XGBRegressor(n_estimators=100, learning_rate=0.08, gamma=0, subsample=0.75,
colsample_bytree=1, max_depth=7)
print(len(X_train), len(X_test))
xgb_model.fit(X_train,y_train)
xgboost.plot_importance(xgb_model)
predictions = xgb_model.predict(X_test)
predictions
r_sq = xgb_model.score(X_train, y_train)
print(r_sq)
print(explained_variance_score(predictions,y_test))
'공부' 카테고리의 다른 글
[혼공컴운]2주차_CPU의 작동 원리/CPU 성능 향상 기법 (0) | 2025.01.19 |
---|---|
[혼공컴운] 1주차_컴퓨터 구조/데이터/명령어 (0) | 2025.01.12 |
가설검정 (0) | 2024.11.30 |
[데벨챌 4기] 그로스 해킹 (그로스 해킹 시작부터, 성장 실험까지/ 그로스 조직과 업무 프로세스) (2) | 2024.11.23 |
[데벨챌 4기] 그로스 해킹 (지표) (0) | 2024.11.16 |