앙상블이란 ?
: 여러 개 분류기의 예측 결과를 합쳐서 분류 정확도를 높이는 기술
1. 기본 아이디어

(1) Training data로부터 base classifier을 조합을 형성하고
(2) 각 base classifier로부터 만들어진 예측을 가지고 투표를 진행해 결과를 냄
※ 주의할 것
- 각 base classifier의 정확도는 50% 이상이어야 함
-> 정확도가 낮은 모델끼리 모아놓으면 오히려 정확도가 더 떨어지는 효과 . . .
- 각 base classifier는 독립적이어야 함
- 독립적이면 base classifier 중 절반 이상이 잘못 예측해야만 오분류가 발생
-> 그러니까 정확도를 높일 수 있는 것 !!
- cf) 독립적이지 않으면 ?
-> 모든 base classifier가 같은 실수를 하니까 정확도 개선이 안 됨
- 각 basie classifier는 높은 variance와 낮은 bias를 가져야 함
2. Bias & Variance란 ?
(1) Bias
: 예측값의 평균과 실제값 평균의 차이
- 단순한 결정경계를 가진 모델일수록 높은 bias를 가짐
ex. logistic regression
- bias가 높은 모델을 선택하면 언더피팅될 가능성이 높음
- 모델이 너무 심플해서 발생하는 문제는 해결이 불가능
(2) Variance
: 훈련 세트의 사소한 변화에 대응하는 모델의 예측의 안정성
- 복잡한 결정경계를 가진 모델일수록 높은 variance를 가짐
ex. ANN
- variance가 높은 모델은 오버피팅이 일어날 가능성이 높음
- 데이터가 조금만 변해도 민감하게 변화한다 -> 높은 variance를 보이는 모델
(3) Bias & Variance 관계
Trade−off
(4) 앙상블에서 사용
: " High Variance & Low Bias "
- 훈련세트의 작은 변화에도 다른 예측을 초래할 수 있기 때문에
각 base classifier은 오버피팅되기 쉬움
- 하지만 여러개의 base classifier을 사용하기 때문에 전체 variance를 줄일 수 있는 것
- 여러 개의 결과를 모아서 다수결을 통해 채택할거니까 여기서의 오버피팅은 상관없음
- 오히려 오버피팅 되도록 (= 오히려 variance가 최대치를 찍도록)
3. 앙상블을 구성하는 방법 세 가지
1) training set을 조합 (data object를 조합)
: 랜덤하게 데이터를 샘플링해서 base classifier가 각각 다른 train data를 사용하여 모델 생성
ex. bagging, boosting
2) feature를 조합
: input feature의 서브셋을 선택 -> 각 base classifier마다 다른 조합의 feature 사용
ex. random forest
3) learning algorithm을 조합
: 같은 training data에 여러번 algorithm을 적용
= 모델의 하이퍼파라미터를 다르게 해서 모델을 다르게 만드는 것
ex. ANN (초기 가중치 등을 각각 다르게), Decision tree(분류기준 Gini, Entropy 그런걸 다르게)
4. 최종 결과 결정법
1) Simple majority voting
: 그냥 다수결
2) Weighted majority voting
: 각 모델마다의 가중치를 다르게 (가중치 = 정확도, 중요도 등등을 표현)
--> 각 모델의 가중치 * 모델의 결과
--> 전체 값 더해서 최종 결과 결정