alpyrithm_알파이리즘
DAY8. Ensemble Learning II 본문
Summary
- Advanced Ensemble Learning
- Advanced Ensemble Learning 개념
- Bagging
- Boosting
- Random Forest
- Stacking
Main
Advanced Ensemble Learning
- Advanced Ensemble Learning 개념
- Ensemble Learning의 본질은 개별 모델을 결합하여 우수한 모델을 형성하는 것
- 우수한 모델이 생성되는 방식을 살펴보면 개별 모델 또는 Learner는 Prediction을 생성하고 그 Prediction은 Final Prediction을 형성하는 데 사용
- 맨 처음 Prediction Set(예측 세트)를 생성하는 Individual Models 또는 학습자를 Base Learner(기본 학습자) 또는 Base Estimator(기본 추정기)라고 함
- Base Learner(기본 학습자)의 예측 조합 모델을 Meta Learner(메타 학습자) 혹은 Meta Estimator(메타 추정기)라고 함
- Bagging
- 개념
- Bootstrap Aggregating의 약자
- Parallel Learning Technique으로 데이터 셋을 이용하여 병렬적으로 학습
- Base Learner(기본 학습자)가 다른 학습자와 독립적으로 Fitting을 수행하고 Prediction함
- Bootstrapping은 가능한 리소스를 최대한 활용하는 것
- 통계적 맥락에서 Bootstrap은 사용 가능한 데이터 세트에서 샘플을 교체하여 가져와 데이터를 처리
- Work Flow
- 1에서 10까지의 10개의 숫자로 구성된 데이터 집합이 있다고 가정
- 사용 가능한 데이터 집합에서 각각 10개의 서로 다른 4개의 데이터 집합을 만들어야 하는 경우 부트스트랩 적용
- 사용 가능한 데이터 세트에서 샘플을 하나씩 가져온 다음
- 다음 샘플을 가져오기 전에 수행한 숫자를 바꿈
- 필요한 데이터 포인트 수를 가진 샘플을 얻을 때까지 계속 진행
- 선택한 후 각 숫자를 교체할 때, 표본에 지정된 데이터 요소가 둘 이상 있는 경우가 발생 가능함을 고려해야 함
- 장점
- Ensemble Learning은 Prediction(예측)의 Variance(분산)을 줄이는데 도움
- Variance(분산)을 줄일 수 있는 한 가지 방법이 여러 학습자의 예측을 평균화하는 것, Bagging에서 Bootstrapping을 사용하면 데이터의 여러 하위 집합이 생성되고 각 데이터 하위 집합에 기본 학습자가 Fitting된 Prediction이 생성됨
- 모든 Base Learner(기본 학습자)의 Prediction은 Meta Learner(메타 학습자) 또는 Final Prediction(최종 예측)을 얻기 위해 평균화
- 개념
- Boosting
- 개념
- 다수의 결정 트리를 통합하여 강력한 모델을 만드는 앙상블 기법으로 이전 학습의 결과를 다음 학습에 전달하여 이전의 오차(잔여 오차)를 점진적으로 개선하는 기법
- 순차적 Learning
- 각 기본 학습자의 예측 오류를 수정하는 원칙에 따라 작동
- Base Learner(기본 학습자)들은 순차적으로 Fitting 수행
- Base Learner(기본 학습자)는 이전 학습자가 생성한 오류를 수정하려고 시도
- 이 프로세스는 우수한 Meta Learner(메타 학습자)가 만들어질 때까지 계속 진행
- 장점
- 뛰어난 성능을 내며 파라미터 조정이 쉬움
- 데이터 scale 변환이 불필요
- 대규모 데이터 적용 가능하고 속도 빠름
- 일반화 및 성능이 좋은 모델
- 단점
- 개별 트리 분석이 어렵고 트리가 점진적으로 복잡해지는 경향이 있음
- 차원이 크고 희소한 데이터에 성능 미흡
- 파라미터(특히 학습률)에 민감하여 파라미터 조정에 따라 결과가 달라질 수 있음
- Work Flow
- Step 1 : Base Learner(기본 학습자)는 데이터 세트의 Subset(하위 집합)에 Fitting 수행
- Step 2 : 모델이 Fitting 되면 전체 데이터 세트에 대한 Prediction 생성
- Step 3 : Prediction Error는 실제 Label과 비교하여 식별
- Step 4 : 잘못된 Prediction을 생성한 Data Sample에 더 큰 가중치 부여
- Step 5 : 다른 Base Learner(기본 학습자)는 이전 단계에서 잘못 Prediction된 Data Sample의 가중치가 변경된 데이터 세트에 Fitting
- Step 6 : Base Learner(기본 학습자)는 이전 모델의 에러를 수정하려고 시도하고 Prediction 생성
- Step 7 : Meta Learner(메타 학습자)가 생성될 때까지 Step 4, 5 및 6 반복
- 개념
- Random Forest
- 개념
- 독립적으로 다수의 결정 트리 모델을 생성하고 그 결과를 결합한(예측값 평균) 최종 모델을 생성함으로써 성능을 높이고 과대 적합을 방지하여 안정적인 모델을 생성하는 앙상블 방법
- 트리 생성 시 일반적으로 설명변수 및 표본을 무작위로 추출(복원 추출, bootstrap 방식)
- 다수의 트리들이 예측한 값의 평균을 적용, 모델의 일반화(안정성)가 향상됨
- 과대 적합 위험이 있는 하나의 결정 트리보다 안정적이고 예측 성능이 높음
- 장점
- 모든 Prediction의 평균을 취하기 때문에 Overfitting으로 고통받지 않음
- Feature Importance 확인에 사용 가능
- Regression 및 Classification 모두 이용 가능
- 불균형 높은 데이터 세트에 사용 가능
- 누락된 데이터 처리 가능
- 뛰어난 성능을 내며 파라미터 조정이 쉬움
- 데이터 scale 변환이 불필요
- 큰 데이터에 적용 가능
- 일반화 및 성능이 좋은 모델
- 단점
- Variance를 줄이지만 Bias로 고통 받음
- 블랙박스 모델이라 내부의 내용 설명이 어려움
- 개별 트리 분석이 어렵고 트리 분리가 복잡해지는 경향(과대 적합)이 있음
- 차원이 크고 희소한 데이터는 성능 미흡
- 선형 모델보다 훈련 속도가 느림
- 개념
- Stacking
- 개념
- Stacking은 Base Learner(기본 학습자)를 결합하여 Meta Leanrer(메타 학습자)를 형성한다는 점에서 Bagging 및 Boosting과 유사한 방식으로 작동
- Base Learner(기본 학습자)로부터 메타 학습자를 얻는 방법에 있어 차이 Meta Learner(메타 학습자)는 Base Learner(기본 학습자)가 생성한 Prediction에 Fitting을 수행함
- Work Flow
- Step 1 : Training Set을 여러 부분으로 나눔
- Step 2 : Base Learner(기본 학습자, Ex KNN)는 훈련 세트의 다른 나머지 부분에 장착된 다음 마지막 세트에 대해 Prediction 생성. 이 과정은 기본 학습자가 훈련 세트의 모든 부분 각각을 Prediction 할 때까지 계속 진행. 생성된 모든 Prediction은 전체 Training Set에 대한 Prediction을 얻기 위해 조합
- Step 3 : 동일한 Base Learner(기본 학습자)를 사용하여 Test Set에 대한 Prediction도 생성
- Step 4 : 다른 기본 학습자 Base Learner(기본 학습자, Ex. Random Forest)를 사용하여 2단계와 3단계 반복
- Step 5 : Meta Leaner(메타 학습자, Ex. LR) 역할을 하는 새 모델 생성. Meta Learner(메타 학습자)는 Base Learner(기본 학습자) 설정한 Learning에서 생성된 Prediction에 Fitting
- Step 6 : Meta Learner(메타 학습자)를 Training Set에 Fitting하면 동일한 모델을 사용하여 Base Learner(기본 학습자)가 Test Set에서 생성한 Prediction을 Prediction
- 개념
728x90
반응형
'SM공부 > Data Mining & Machine Learning' 카테고리의 다른 글
DAY9. Data Pipeline (0) | 2020.08.05 |
---|---|
DAY7. Ensemble Learning I (0) | 2020.08.03 |
+) DataFrame 기초 정리 (0) | 2020.07.28 |
DAY6. Supervised Learning III (0) | 2020.07.27 |
DAY5. Supervised Learning II (0) | 2020.07.26 |
Comments