Boosting



성능이 약한 학습기(weak learner)를 여러 개 연결하여 강한 학습기(strong learner)를 만드는 앙상블 학습

앞에서 학습된 모델을 보완해나가면서 더나은 모델로 학습


# AdaBoost



과소적합(underfitted)됐던 학습 데이터 샘플의 가중치를 높이면서 새로 학습된 모델이 학습하기 어려운 데이터에 더 잘 적합되도록 하는 방식이다


![](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F199e5187-75bb-4e03-969e-490cb8de79f4%2FUntitled.png?table=block&id=d211b702-3f18-4858-a8b5-b7305840e44e&cache=v2)
여기선 멀리있는놈들이 과소적합

**weighted linear combination**
> (가중치 선형결합)을 하여 h(x)strong learner

> ![](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F0e4ab44f-b40e-4772-9c5f-8d3a1037e7a5%2FUntitled.png?table=block&id=111e5592-320e-4749-85bf-eb756d00e24c&cache=v2)
> 

​를 구하여 값을 예측한다.



# 그래디언트 부스팅




아다부스트'에서 살펴본 것 처럼 전의 학습된 모델의 오차를 보완하는 방향으로 모델(분류기, 학습기)을 추가해주는 방법은 동일하다. 하지만,
**그래디언트 부스팅**
은 아다부스트 처럼 학습단계 마다 데이터 샘플의 가중치를 업데이트 해주는 것이 아니라 학습 전단계 모델에서의
**잔여 오차(residual error)**
에 대해 새로운 모델을 학습시키는 방법이다.

![](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F55fb73d4-7435-4d42-a78a-b452da3a134e%2FUntitled.png?table=block&id=2a5963cd-9029-405d-9974-1e55a1c4b637&cache=v2)
오차에 대한 새 모델!이렇게
`learning_rate`를 이용하는 방법을**축소**(shrinkage)라고 하는 규제(regularization) 방법이다.
![](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F1ecaff29-9ea8-469f-9469-954172be68b5%2FUntitled.png?table=block&id=d686a6fc-0ae8-41bf-bddf-f1cffe73d147&cache=v2)

![](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fe50c22c7-f0d9-4bbe-8630-cd6ac2972529%2FUntitled.png?table=block&id=5af744c9-bf9c-4f09-88a7-7df01097638f&cache=v2)
overfitting 쉬움
조기 종료(early stopping)

GBRT를 학습시킨 후
`staged_predict()`
메소드를 이용해 각 모델의 예측값(
`y_pred`
)과 실제값(
`y_val`
)의 MSE를 구한 뒤 MSE가장 낮은 최적의 트리의 개수를 찾아 다시 최적의 트리 개수(
`best_n_estimator`
)로 그래디언트 부스팅을 학습





