앙상블(Ensemble)
*ensemble: 모두 함께, 일제히; 동시에
앙상블 학습은 모델 결합(model combining)이라고 부르기도 한다.
어떤 데이터의 값을 예측한다 할 때, 보통 하나의 모델을 활용한다. 하지만 여러 개의 모델을 조화롭게 학습시켜 그 모델들의 예측 결과들을 이용한다면 더 정확한 예측값을 구할 수 있을 것이다.
즉, 하나의 모델만을 학습시켜 사용하지 않고 여러 모델을 학습시켜 결합하는 방식으로 문제를 처리한다.
특히, 모델 하나로 원하는 성능을 낼 수 없을 때 앙상블 학습을 사용하면 효과적인데, 개별로 학습한 여러 개의 모델을 조합하여 일반화(generalization) 성능을 향상 시킬 수 있다.
여기서 개별로 학습된 모델을 weak learner라고 표현하기도 한다.
즉, 약하게 학습된 여러 모델들을 결합하여 사용하는 것을 앙상블 학습이라 할 수 있다.

앙상블 모델의 장점
위 모델을 사용함으로 써 다음 2가지 장점을 얻을 수 있다.
1. 성능을 분산시키기 때문에 과적합(overfitting) 감소 효과가 있다.
2. 개별 모델 성능이 잘 안 나올 때 앙상블 학습을 이용하면 성능이 향상될 수 있다.
과적합 현상을 어느 정도 막을 수 있다는 것 자체가 성능 향상이라는 말과 거의 같은 의미로 봐도 무방하다.
앙상블 학습의 분류
앙상블 학습은 방법론에 따라 크게 두 가지로 나누어질 수 있다.
취합
weak learner(개별 모델)들이 미리 정해져 있어 이들을 취합해 사용하는 방법.
종류: 다수결/투표 기반 방법, 배깅(bagging), 페이스팅(pasting), 랜덤 포레스트(random forest)
다수결/투표 기반 방법

여러 모델에서 출력된 결과를 종합하여 나온 것을 최종 output으로 설정하는 방법이다.
위 모델을 해석해보면 7개의 모델이 있고 새로운 인스턴스로 1을 넣었다.
랜덤 포레스트 모델에서 최종적으로 각 모델 7개 중, 1은 5개가 나왔고 2는 2개가 나왔으므로 최종 클래스 output은 1이 된다.
배깅(bagging)과 페이스팅(pasting)


배깅과 페이스팅 모두 train set을 random sampling 하여 잘게 나눈 후 나누어진 train set을 여러 개의 모델에 할당하여 학습시킨다.
배깅은 중복을 허용하며 train set을 나누는데 통계학에서는 이 방법을 부트스트랩, 중복이 허용된 리셈블링이라고 한다.
즉, 배깅은 전체 train set에서 여러 번 중복을 허용한 복원 추출을 한다고 생각할 수 있다.
이와 반대로 중복을 허용하지 않고(비복원 추출) train set을 나누는 것, 즉 부트스트랩의 반대말을 페이스팅이라고 한다.
랜덤 포레스트(random forest)

여러 개의 결정트리(decision tree)를 생성하여 각각의 트리에서 나오는 결과를 취합하는 방법이다.
위 과정에서 여러 결정트리를 생성할 때 배깅과 부스팅 방법을 사용하기도한다.
부스팅
weak learner들을 하나씩 점진적으로 연결하여 strong learner를 만드는 방법
종류: 에이다 부스트(Ada Boost)와 그레디언트 부스트(Gradient Boost)가 있다.
에이다 부스트(Ada boost)와 그레디언트 부스트(Gradient boost)


weak learner(개별 모델)들의 결과를 한꺼번에 취합하는 것이 아닌 결과들을 순차적으로 적용한다.
Ada boost는 각 weak learner(개별 모델)을 순차적으로 적용해 나가는 과정에서 잘 분류된 샘플의 가중치는 낮추고 잘못분류된 샘풀의 가중치는 상대적으로 높여주면서 샘플 분포를 변화시킨다.
반면, 그레디언트 부스트는 각 weak model을 순차적으로 적용해나가는 과정에서 잘못 분류된 샘플의 error를 최적화 하는 방식으로 진행된다.
이렇게 함으로써 식별하기 쉬운 데이터 특징에 대응하는 학습기부터 식별하기 어려운 데이터 특징에 대응하는 학습기까지 생성이 된다.
배깅과 부스팅 차이

위 그림에서 나타내는 바와 같이 정리하면, 배깅은 병렬 학습
부스팅은 sequential 학습이다. 한번 학습이 끝난 후 결과에 따라 가중치를 부여한다. 그렇게 부여된 가중치가 다음 모델의 결과 예측에 영향을 준다.
부스팅은 배깅에 비해 error가 적다. 즉 성능이 좋다는 말이다. 하지만 속도가 느리고 오버피팅이 될 가능성이 농후하다. 그렇다면 실제 모델링을 할때 어떤 방법을 쓰는게 좋을까?
이에 대한 답은 상황에 따라 다르다고 볼 수 있다. 개별 결정 트리의 낮은 성능이 문제라면 부스팅을 사용하고, 오버 피팅이 문제라면 배깅을 사용하면 된다. 이처럼 각자 사용할 경우를 잘 판단하는게 좋다.
[참고]
1.bkshin.tistory.com/entry/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-11-%EC%95%99%EC%83%81%EB%B8%94-%ED%95%99%EC%8A%B5-Ensemble-Learning-%EB%B0%B0%EA%B9%85Bagging%EA%B3%BC-%EB%B6%80%EC%8A%A4%ED%8C%85Boosting
머신러닝 - 11. 앙상블 학습 (Ensemble Learning): 배깅(Bagging)과 부스팅(Boosting)
앙상블(Ensemble) 앙상블은 조화 또는 통일을 의미합니다. 어떤 데이터의 값을 예측한다고 할 때, 하나의 모델을 활용합니다. 하지만 여러 개의 모델을 조화롭게 학습시켜 그 모델들의 예측 결과들
bkshin.tistory.com
2.blog.naver.com/PostView.nhn?blogId=qbxlvnf11&logNo=221488622777&categoryNo=0&parentCategoryNo=0&viewDate=¤tPage=1&postListTopCurrentPage=1&from=postView
'Machine Learning' 카테고리의 다른 글
로지스틱회귀와 활성화함수 (0) | 2021.05.02 |
---|---|
Catboost (0) | 2021.04.11 |