앙상블은 다양한 분석 방법론을 조합하기 때문에 해석이 어렵지만, 보다 우수한 예측 성능을 갖는다는 장점을 가짐
이는 실생활에서 중요한 결정을 앞두고 여러가지 의견을 모으고 종합해 최종결정을 하는 것과 유사함
예측을 통해서 모델 4개가 예측치를 1, 1, 2, 1로 뽑았다면 다수결의 원칙으로 1을 예측 결과로 반환
앙상블의 특징
단일 모델의 약점을 다수의 모델들을 결합하여 보완
성능이 떨어지더라도 서로 다른 유형의 모델을 섞는 것이 전체 성능에 도움이 될 수 있음
예측기가 가능한 서로 독립적일 때 최고의 성능을 발휘함
서로 다른 알고리즘으로 학습시키면 서로 다른 종류의 오차를 만들 가능성이 높기 때문에 정확도를 향상시킨다.
랜덤포레스트 및 뛰어난 알고리즘들은 모두 결정 트리 알고리즘 기반 알고리즘으로 적용함
결정트리의 단점인 과적합을 수십~수천개의 많은 분류기를 결합해 보완하고, 장점인 직관적인 분류 기준은 강화됨
정형데이터를 다루는데 가장 뛰어난 알고리즘(비정형 데이터 : 신경망)
랜덤포레스트, 그래디언트 부스팅 알고리즘
XGBOOST, LIGHGBM
앙상블 방식, 유형
보팅(Voting)
동일데이터, 서로 다른 알고리즘, 최종결정은 보팅(투표)
1) 하드 보팅 : 각 분류기가 예측한 결과를 다수결로 최종 class 결정
2) 소프트 보팅 : 각 분류기가 예측한 확률을 평균하여 결정하는 방식
- 일반적으로는 확률이 더 높은 투표에 비중을 더 두는 소프트 보팅이 하드 보팅보다 예측 성능이 상대적으로 우수
⎼ 사이킷런은 VotingClassifier 클래스를 통해 보팅을 지원
배깅(Bagging)
서로 다른 데이터 샘플링, 중첩을 허용, 같은 알고리즘 최종 결정은 보팅(동일)
부트 스트랩 분할 방식 : 원본 학습 데이터에서 데이터를 샘플링해서 추출하는 방식, 중복을 허용(복원 추출)
Bootstraping 표본 추출(sampling) 방법
부트 스트래핑(bootstrapping)이라고도 하는 표본 추출 방법
주어진 데이터에 대해 사전 설정한 비율에 따라 복원 추출, 표본을 뽑고 다시 하는 방법
가령 100개의 관측치가 있을 때, 첫번째 추출로 선택된 관측치가, 두번째 표본 추출시에도 포함 될 수 있음.(즉 각 관측치에 대한 표본 추출확률은 모두 0.01 = 1/100으로 동일)
부트스트랩 표본 추출 방법을 이용하면 전체 데이터를 이용해 하나의 모델로 만드는 것보다 안정적인 예측 또는 분류 결과를 얻을 수 있음
OOB 평가(Out of Bag)
Bagging으로 샘플링할 때 선택되지 않은 샘플(일반적으로 37%)을 검증 데이터로 사용함
예측기마다 남겨진 샘플이 모두 다름
앙상블의 경우, 각 예측기의 oob 평가를 평균하여 사용
sklearn의 경우 객체 생성시 oob_score=True로 설정하여 학습 후 자동으로 oob평가를 수행시킬 수 있다
실습
vo_df = VotingClassfier()
앙상블 기법2) 배깅(bagging)
배깅(bagging : Bootstrap AGGregatING)
Bootstrap 샘플링을 통한 voting을 통한 앙상블 예측기
최종 예측을 하 는 점은 voting과 동일 ⎼ 학습할 데이터를 추출하는 방식에서 차이: 부트스트랩(bootstrap)이란 표본 추출 방법(복원 추출)을 이용해 각 모형의 다양성을높여 앙상블 하는 방법 ⎼ 같은 종류의 알고리즘 모델을 여러 개 결합하여 예측 ⎼ 각각의 모델에 전체 학습 데이터 중 서로 다른 데이터를 샘플링하여 학습하는 점이 보팅과 차이 ⎼ 앙상블 모형으로 주로 결정트리 모형이 많이 쓰임. ⎼ sklearn.ensemble.BaggingClassifier