boosting에 대하여
boosting에 대한 알고리즘 설명이 2가지 정도 있습니다.
주어진 training data set이 있다고 생각해봅시다. 여기서 random하게 sampling하여 sample dataset을 구성합니다.
sampling을 하는 과정을 boosting round라고 부릅니다.
boosting round에서 구성한 sample dataset을 이용하여 하나의 model A를 학습시킵니다.
(처음 가지고 있던 train set으로 학습시키는게 아니고 sampling한 것으로 학습시킴)
이 학습시킨 model A를 가지고 있던 training data set 전체에 대해서 validation을 수행합니다.
일부 뽑은 sample set으로 validation을 하는 것이 아니라 전체 train data set을 대상으로 validation을 수행합니다.
validation을 수행하면 이 model이 맞춘 정답과 틀린 오답이 있겠죠.
당연하지만 모든 training을 사용하지 않고 이 training set의 일부를 사용하여 학습했기 때문에 분명히 틀리는 부분이 존재할 것입니다.
다시 training data set에 대해 random하게 sampling을 수행합니다. 그런데 이번에 sampling은 처음 sampling과는 조금 다릅니다.
그것은 이전에 validation 수행결과에서 틀린 data에 가중치를 부여하여 sampling을 수행합니다.
data의 가중치는 데이터가 뽑힐 확률을 의미합니다.
그래서 틀린 data에 가중치를 더 부여한다는 의미는 sampling에 더 잘 뽑히도록 만든다는 것입니다.
참고로 이전 boosting round에서 뽑히지 못했던 data에도 가중치를 부여한다는 설명도 있었습니다. 보통은 틀린 데이터에 가중치를 부여한다고 말을 더 많이하긴 합니다.
여기서 두가지 알고리즘 설명이 나뉩니다.
1) 이렇게 두 번째 boosting round에서 뽑은 sample을 가지고 model A를 다시 학습시켜 weight를 update합니다.
2) 이렇게 뽑힌 data sample을 가지고 또 하나의 model B를 학습합니다.
model A를 재학습했다면 다시 전체 train set에 대해 validation을 수행한 뒤 틀린 데이터에 대해 가중치를 부여하여 다시 sampling을 하여 위 과정을 계속해서 반복합니다.
또 하나의 다른 model을 학습했다면 이전 round에서 학습한 model A와 지금 학습한 model B를 모두 사용하여 전체 training set에 대해 validation을 수행합니다.
model이 2개니까 voting하여 결과를 냅니다.
위 과정을 반복하여 강력한 하나의 model을 만드는 방법이 boosting입니다.
참조
[EM] 부스팅(Boosting) 이론 : 네이버 블로그 (naver.com)
'정형데이터' 카테고리의 다른 글
XGBoost 모델 (0) | 2021.11.02 |
---|---|
Gradient boosting 모형 (0) | 2021.11.01 |
Adaboost 모형 (0) | 2021.11.01 |
random forest 모형 (0) | 2021.10.28 |
bagging이란? (0) | 2021.10.27 |