- 트리기반 모델에서의 강한 예측기를 만들어주는 기법
- 정의: 약한 학습기에서 강한 학습기를 만들어 최종 모형 평가
부스팅 트리는 서로 독립적이지 않다. 앞의 결과 트리가 뒤의 결과 트리에 영향을 주기 때문이다. 이전 트리 오차를 보완하는 두 번째 트리를 만드는 과정을 반복하는 기법이다. 즉, 이전 학습 결과 오차를 반영한 새로운 학습기를 만드는 과정인 것이다. 조금 더 복잡해지는 모델을 계속 반복하여 만들게 된다.
- 서로 트리들이 상호 연관(오차를 보완하다보니 트리들끼리 독립적이지 않음 → parallel 효과 없음, 즉 CPU 코어를 갖고 job을 할당하여 마지막에 job을 합치게 되는데 서로 독립적이지 않은 모델들 가지고 parallel test를 하면 속도를 더 저하시키는 요인이 되기도 함. 즉, 계속 다음 job을 기다리기 때문에 기대만큼 효과가 좋지 않음.
- 랜덤 포레스트보다 더 적은 수의 트리로도 높은 예측력을 나타냄(속도가 느린 편이긴 하지만 생각보다 느리진 않음. 점차 강력한 모델로 만들어지기 때문에 점차 적은 수의 트리로 완성됨)
- 대용량, 고차원 데이터에 유리
- GBT(Gradient Boosting Tree), AdaBoost, XGBM(eXtreme Gradient Boosting Tree), Light GBM
1) AdaBoost(에이다부스트)
- 오분류에 높은 가중치를 부여하여 오분류 데이터들이 정분류 되도록 트리를 정교하게 만듦
2) GradientBoost(그래디언트부스트)
- 이전 트리의 오차를 학습하여 오차를 줄이는 최적화 방식을 통해 트리를 보완
오차 보완 정도는 학습률(learning rate)로 결정(학습률은 하이퍼 파라미트)
그래디언트 → 오차의 가장 작은 지점을 찾아가는 과정(최적화 과정).
오차를 정의하는 방법
1. 회귀모형 일 떄: MSE를 오차 함수로 주요 사용
2. 분류모형 일 떄: 로그손실함수를 사용하여 오차를 측정, 측정된 오차를 가지고 기울기와의 관계를 파악. → 분명히 오차를 최소화하는 수렴 구간이 있을 것임. 이 구간으로부터 조금만 구간을 벗어나도 오차가 커짐.
오차를 최소화하는 최적화 지점을 미분을 통하여 찾을 수 있다는 것이 그래디언트 이론
오차함수를 정의하고 기울기와의 관계를 파악하는 최적화 방식을 통해 트리를 보완. 여기서말하는 기울기는 임계값.
학습률을 너무 작게 설정하면 오차의 최적화 되는 수렴구간을 찾을 수 있으나 너무 느리다. 속도라는 측면에서 적절한 수준에서 튜닝하여야한다.
다시 정리하면, 최적화 방식은,
1. 오차 함수를 정의(회귀는 MSE 기반의 오차 함수 사용, 분류는 로그 손실 함수 사용)
2. 오차와 기울기(=임계값) 관계를 파악
3. 오차의 최소 지점을 찾음(수렴 구간) → 최적화
그러다보니 몇 번 학습하면 오차는 최적화된다. stopping point는 랜덤포레스트보다 빠르다.
cancer data로 활용하여 보자.
예제 - cancer data를 사용한 종양의 양성 분류(boosting tree)
1. 데이터 로딩
2. 모델링
여기서는 train/test를 나누지 않는다. CV를 할 것이므로 원본 그대로 두겠다.
XGB는 설치를 해야한다.
pip install xgboost
3. GB의 lr 튜닝(learning rate)
learning_rate를 조절하는 것이 그닥 효과가 있어보이지 않는다.
속도를 느리게 가져가더라도 lr을 작게 설정하여 수렴구간에 잘 도달하게 하는 것이 좋겠음.
'배우기 > 복습노트[Python과 분석]' 카테고리의 다른 글
[복습] Python | 분석 | 결측치 처리 (0) | 2024.02.12 |
---|---|
[복습] Python | 분석 | 부스팅 이론(2) (0) | 2024.02.12 |
[복습] Python | 분석 | 이미지 인식 (2) (0) | 2024.02.12 |
[복습] Python | 분석 | 이미지 인식 (1) + 하루끝(20240205) (0) | 2024.02.11 |
[복습] Python | 분석 | 교차검증(CV, Cross Validation) (0) | 2024.02.11 |