-
[0402 복습] 앙상블 (보팅, 배깅, 부스팅, 스태킹)KT 에이블스쿨 복습 2024. 4. 3. 09:08
앙상블
CH1. 앙상블 이해
앙상블(Ensembel)
- 약한 모델이 올바르게 결함하면 더 정확하고 견고한 모델 얻을 수 있음 ! → 약분류기를 강분류기로 만드는 방법
- 여러 개의 모델을 결합해 훨씬 강력한 모델을 생성하는 기법
- 캐글과 같은 많은 기계학습 경쟁에서 상위 순위 차지
- 앙상블 방법: ① 보팅 ② 배깅 ③ 부스팅 ④ 스태킹
CH2. 보팅
보팅(Voting)
- 여러 모델들(다른 알고리즘)의 예측 결과를 투표를 통해 최종 예측 결과 결정하는 방법!
- 하드 보팅: 다수 모델이 예측한 값
- 소프트 보팅: 각 모델이 예측한 레이블 값의 결정 확률 평균 구하고 가장 확률이 높은 값
CH3. 배깅
배깅(Bagging)
- Bootstrap Aggregating의 약자, 부트스트랩한 데이터로 모델 학습 (같은 모델)
- 부트스트랩: 샘플데이터를 복원추출해서 중복이 발생할 수 있음!
- 같은 유형의 알고리즘 기반 모델 사용!!!
- 범주형 데이터는 투표 방식으로 결과 집계
- 연속형 데이터는 평균으로 결과를 집계
- 대표적인 배깅 알고리즘: Ramdom Forest(랜덤 포레스트)→ 우리는 실습할 때 배깅 알고리즘 중 random Forest만 사용하기 때문에 Decision Tree 모델만 이용!
랜덤 포레스트(Random Forest)
- 배깅의 가장 대표적인 알고리즘
- 여러 의사결정나무 모델이 전체 데이터에서 각자의 데이터 샘플링 (Bootstrap Sample), 기본값 = 100번
- 각 100개의 샘플의 트리구조는 다 다르다! Why? 데이터가 다르니까!
- 훈련 데이터의 x변수(features): 모델을 만들 때 n개의 feature을 고르라고도 설정할 수 있음!
두 가지 의미의 Random
1) 랜덤하게 데이터를 샘플링: 약간의 중복을 허용하면서
2) 개별 모델이 트릴르 구성할 때 분할 기준이 되는 feature을 랜덤하게 선정
- 무작위로 뽑은 n개의 feature들 중 가장 정보이득이 큰 feature을 기준으로 트리 분할→ 개별 모델마다 다른 구조의 트리 구성!
주요 하이퍼파라미터
- n_estimators: 만들어질 의사결정나무 개수 지정 (기본값=100)
- 많이 지정할수록 성능이 좋아질 것으로 기대 but 무조건 그런 것은 아님!
- 너무 많이 늘리면 학습 속도가 느려질 수 있음!
- max_depth: 트리의 최대 깊이 (기본값=None)
- max_feature: 최선의 분할을 위해 고려할 feature 수 (기본값= auto)
- 기본값으로 설정하면 모든 feature을 사용해서 분할 수행
- 정수형 선언 → feature 수, 실수형 선언 → Feature 비율
CH4. 부스
부스팅(Boosting)
- 같은 유형의 알고리즘 모델 여러 개에 학습을 순차적으로 수행!
- 이전 모델이 제대로 예측하지 못한 데이터에 대해 가중치 부여!
- 예측 성능이 뛰어나 앙상블 학습을 주도 → 예측을 반복하다보면 정확도가 올라감
- 배깅에 비해 성능 좋음 but 속도가 느리고 과적합 발생 가능성 있음
- 대표적인 부스팅 알고리즘: XGBoost, LightGBM
- 타겟에 문자열이 있으면 안 되기 때문에 무조건 가변수화해야 함!
XGBoost
- 부스팅을 구현한 대표적인 알고리즘 중 하나: GBM
- GBM 알고리즘을 병렬 학습 가능하도록 구현한 것 : XGBoost
- 회귀, 분류 문제를 모두 지원, 성능과 자원 효율이 좋아 많이 사용됨!
- 장점
- 높은 예측 성능 / 빠른 수행 시간 / 과적합 규제 기능 보유 / 가지치기 / 내장된 교차 검증 / 결측치 자체 처리
- 주요 하이퍼파라미터
- n_estimators: weak learner 개수로 개수가 많을수록 일정 수준까지는 성능 좋아질 수 있음, 기본값=100
- max_depth: 트리 기반 알고리즘 max_deptah와 같은 의미 0을 지정하면 깊이 제한 없어짐, 기본값=6
스태킹(Stacking)
- 여러 모델의 예측값을 최종 모델의 학습 데이터로 사용하여 예측하는 방법
- KNN, Logistic Regression, XGBoost 모델을 사용해 예측값 4개를 구한 후
→ 최종 모델인 Random forest 학습 데이터로 사용, 4개의 예측값을 최종 모델 feature에 추가하는 방식 - 현실 모델에서 많이 사용되지 않음, 캐글 같은 미세한 성능 차이로 승부를 결정하는 대회에서 사용됨
- 기본 모델로 4개 이상 선택해야 좋은 결과 기대할 수 있음!
실습
'KT 에이블스쿨 복습' 카테고리의 다른 글