앙상블 (Ensemble)
: 예측기를 모아서 하나의 모델로 만든다
**앙상블 학습은 예측기가 서로 독립적일 때 최고의 성능을 보인다.**
-why?: 각 분류기마다 서로 다른 종류의 오차를 만들어 서로가 보완적으로 작용할 수 있기 때문이다.
-다른 종류(알고리즘)의 학습기를 사용한다
보팅 (Voting)
-각각의 모델을 학습시킨다 (각각의 정확도는 80% 정도)
-각 모델이 도출한 y를 투표를 통하여 최종 결정(다수결 투표 == 직접투표)
- 직접투표: 다수결 투표 (통계적 최빈값, 회귀의 경우 평균을 계산한다.)
- voting = 'hard'
- 간접투표: 개별 분류기의 예측 평균을 내어 가장 확률이 높은 클래스를 예측한다. -> 확률 높은 곳에 비중이 있음 == 직투보다 성능이 높다.
- voting = 'soft'
-다수결 투표로 예측할 때의 성능이 개별 모델 중 성능이 가장 높은 모델보다 좋은 경우가 많음
**약한 학습기: 각각의 모델
**강한 학습기: 약한 학습기를 앙상블하여 더 좋은 성능을 내는 모델
배깅 (Bagging)
-from sklearn.ensemble import BaggingClassifier, BaggingRegressor
-훈련세트에서 중복을 허용하여 샘플링하는 방식
-같은 훈련 샘플을 여러개의 학습기에 걸쳐 사용할 수 있음
-한 예측기를 위해 같은 훈련 샘플을 여러개의 예측기에 걸쳐 사용할 수 있음
-훈련에 사용되지 않은 데이터 포인트: oob(out of bag) -> 평가하는데에 사용될 수 있음
페이스팅 (Pasting)
-중복을 허용하지 않고 샘플링하는 방식
-같은 훈련 샘플을 여러개의 학습기에 걸쳐 사용할 수 있음
부스팅(Boosting)
-약한 학습기를 여러개 연결하여 강한 학습기를 만든다
-앞의 모델을 보완해 나가면서 학습
예시)
Adaboost
- 잘못분류된 세트의 가중치를 높여 다시 훈련시키고 가중치 업데이트 반복
- 경사하강법은 비용함수를 최소화하기 위하 모델의 파라미터를 조정
- Adaboost는 비용함수를 최소화하기 위해 예측기를 추가
- 예측기에 따라서 다른 가중치를 가진다.
- 연속된 학습 기법으로 병렬화 불가
Gradientboost
- Ada처럼 오차를 보정하도록 예측기를 추가
- 하지만 샘플의 가중치를 수정하는 것이 아닌 잔여 오차에 대해서 새로운 예측기를 생성
스태킹 (Stacking)
-앙상블에 속한 모든 예측기를 취합하는 모델을 만들 수 있지 않을까?
-각 예측기가 값을 예측하고 마지막 예측기(블랜더, 메타학습기)가 예측값들을 통해서 최종 예측을 만든다.
-블렌더(메타학습기)를 훈련시키는 방법
- 홀드아웃 세트를 사용한다
- 훈련셋 -> 2개의 subset으로 나눈다 (첫번째는 첫번째 레이어의 예측을 훈련시키기 위해서 사용) -> 첫번째 셋으로 첫번째 레이어의 예측기를 훈련시킨다 -> 두번째 샘플을 예측한다(만약 학습기가 3개이면 3개의 예측 셋이 만들어진다.) -> 생성된 개별 예측기의 예측셋으로 블렌더(최종 모델)를 훈련 => 첫번째 레이어의 예측을 가지고 타깃값을 예측하도록 한다.
- 블랜더를 여러개 훈련시키는 것도 가능
'2023 > 물사랑 나라사랑' 카테고리의 다른 글
최종데이터 처리 (0) | 2023.09.24 |
---|---|
머신러닝 모델위주 (0) | 2023.09.11 |
요약) 강화학습을 이용한 응집제 주입률 최적화 (0) | 2023.09.11 |
EDA 정리 (0) | 2023.09.08 |
연습 데이터) 상수원-취수원 통합 수질 및 녹조 데이터 (0) | 2023.09.07 |