앙상블에 관하여

highway92·2022년 1월 18일
0

머신러닝

목록 보기
1/5

1. 앙상블

앙상블의 사전적인 의미는 '전체적인 어울림 혹은 통일'이다. 이를 머신러닝에 빗대어 본다면 하나의 알고리즘으로 여러개의 모델을 학습하는 것이라 할 수 있다.

Decision Tree(결정 트리) 알고리즘이 가장 대표적이라고 할 수 있겠다.
(아래의 그림과 같은 것을 결정트리라고 한다.)

예를 들어 사람과 개를 구분하는 모델을 만들기 위해서 10000개의 사진을 준비했다고 하자. 그리고 앙상블 기법을 사용하여 10개의 결정트리 모델을 만들었다.

그리고 테스트를 하기위해 개의 탈을 쓴 사람 사진을 넣었는데 7개 모델은 사람이라고 판단하고 3개의 모델은 개라고 판단했다고 하자. 이 경우 투표(Voting)에 따라 이 사진은 사람이라고 판단되게 된다.
만약 앙상블 기법을 사용하지 않았더라면 내가 가진 모델이 개라고 판단할 수 있는 위험이 좀 더 컸지 않을까?

앙상블 기법을 사용할때는 훈련 데이터를 다르게 투입하거나, 의도적으로 모델을 변화시키는 작업이 수반된다.
그렇지 않으면 모두 똑같은 모델이 나오기 때문에 앙상블을 하는 의미가 없다.
이러한 작업들을 배깅 과 부스팅 이라 한다.

2. 배깅과 부스팅

2-1. 배깅(Bagging)

배깅은 훈련데이터를 다르게 해주는 작업이다. 매번 훈련데이터를 랜덤 복원 샘플링하는 방법을 사용한다.

배깅의 특징으로는 병렬적처리(각각의 모델간의 관계가 독립적)이라는 것인데 이것이 어떤 것인지 살펴보자.
사람과 개의 사진 10000장을 예로 들자면
1번 모델 -> 데이터셋에서 랜덤으로 1000장의 사진을 훈련에 사용함
2번 모델 -> 데이터셋에서 랜덤으로 1000장의 사진을 훈련에 사용함
. . .
10번 모델 -> 데이터셋에서 랜덤으로 1000장의 사진을 훈련에 사용함

이런식으로 훈련이 진행되기에 overfitting문제를 막을 수 있다.
대표적인 배깅의 앙상블 기법으로는 Random Forest가 있다.

2-2. 부스팅(Boosting)

부스팅은 모델을 변화시키는 작업이다.
이 부분은 설명이 길어지기 때문에 생략하지만 대표적으로 2가지 방법이 있다.

첫 번째는 오류에 가중치를 두는 방법으로 보정을 거친다.
그래서 1번 모델 ... 10번 모델로 갈 수록 오차를 보완한 모델이 완성되게 되는 것이다.
-> 에이다 부스트(Adaboost) 등

두 번째는 loss를 이용하여 gradient descent하는 방법이다.
이 방법은 따로 포스팅을 할만큼 내용이 방대 하기 때문에 생략한다.
대략적으로는 훈련을 거치며 오차를 줄이는 방식으로 훈련이 진행된다고 생각하면 된다.
-> XGBoost, LightGBM 등

profile
웹 개발자로 활동하고 있습니다.

0개의 댓글