앙상블 학습에 대한 설명과 기법에 대한 소개
앙상블 학습에 대한 설명과 기법에 대한 소개
이번 포스팅에서는
기계 학습 모델의 성능을 향상하는 데
도움이 될 수 있는 방법인
앙상블 학습에 대해 알아보겠습니다.
몇 가지 인기 있는 앙상블 전략과
해당 알고리즘에 대해 이야기하기 전에
앙상블 학습이 무엇인지와
그 이점을 먼저 알아보겠습니다.
앙상블 학습이란?
강력한 학습자(learner)를 만들기 위해
여러 개의 약한 모델을 결합하는 것이
앙상블 학습의 기본 아이디어입니다.
일반적인 기계 학습 분류 및
회귀 방법의 기능을 향상시키는 데
유용한 기술입니다.
전체 분류 성능을 향상시키기 위해
앙상블 모델은 많은 분류기(classifiers) 및
회귀자(regressors)의 결과를 결합합니다.
개개인 들이 두 가지 옵션 중에서
어느 것이 올바른지 결정해야 하는 상황을
가정해 보겠습니다.
모든 개개인들은 각각 독립적으로
투표를 진행합니다.
이러한 투표를 추가한 후
과반수 규칙이 가장 정확한 것으로
결정하게 됩니다.
이것은 군중이 개인보다 더 똑똑하다는 것이
전제가 되는 거죠.
앙상블 학습도 마찬가지입니다.
하나의 강력한 분류기를 만드는 대신,
우리는 약한 분류기들의 결합을 통해
최종적으로 하나의 결과를 얻기 위해 결합합니다.
분류 문제의 경우
다수의 투표를 수행할 수 있는 반면,
회귀의 경우에는
예측의 평균을 수행할 수 있습니다.
앙상블 학습 방법 사용의 장점
1. 단독 모델 대비 더 좋은 예측 정확도 제공
2. 바이어스와 분산 감소
3. 모델의 과대 적합 또는 과소 적합 해결
4. 안정적이고 덜 이슈 없음
앙상블 학습 기법
다양한 앙상블 학습 기법과
그에 대응하는 알고리즘에 대해 알아보겠습니다.
앙상블 학습은 세 가지 범주로 나뉩니다.
* 앙상블 학습의 세 가지 범주
Bagging - 단일 데이터세트를 인스턴스 별로 하위 집합으로 구분(병렬로 작동)
Boosting - 단일 데이터세트를 인스턴스 별로 하위 집합으로 나눕니다(순차적으로 작동)
Stacking - 다른 분류기 사용
Bagging
배깅의 목표는 더 정확한 결과를 제공하기 위해
많은 모델의 출력을 통합하는 것입니다.
그러나 문제는 동일한 데이터 세트를 사용하여
모두 빌드한 다음 결과를 집계하는 경우
모든 모델이 동일한 입력을 사용하기 때문에
동일한 출력을 생성할 가능성이 높다는 것입니다.
부트스트랩 접근 방식으로
이 문제를 해결합니다.
"부트스트래핑"으로 알려진
데이터 샘플링 접근 방식에는
복원 추출을 통해 데이터의 하위 집합을
만드는 것이 포함됩니다.
예를 들어 데이터 세트에
다음 5개의 데이터 포인트(A ,A, B, B, C)가
포함되어 있는 경우,
부트스트랩을 사용하여 생성된
이 데이터 세트의 하위 집합은
원래 데이터 세트와 크기가 같지만
대체된 데이터를 포함합니다.
예시:
- Subset 1: A A A B C
- Subset 2: B C B A C
- Subset 3: A B A C C
그런 다음 이러한 데이터 하위 집합이
다른 모델로 전달되고 결과가 집계됩니다.
알고리즘은 다음과 같이 작동합니다.
1. 복원 추출을 고려하여 데이터 세트의 여러 하위 집합 생성
2. 모델을 하위 집합에 할당하고 해당 모델로 분류기 훈련
3. 각 분류기가 자체 데이터 샘플을 사용하여 학습 지속
4. 모든 모델의 결합된 예측을 통해 최종 예측 산출
배깅은 다른 훈련 하위 집합으로 생성된
여러 분류자에 대한 평균화/투표를 통해
분산(변동)을 줄임으로써 작동합니다.
Boosting
Boosting의 모델은 서로 분리되어 있습니다.
더 나은 결과를 원한다면 추가된 새 모델이
이전 모델에서 생성된 실수를
수정할 수 있어야 합니다.
즉, 기초 학습자는 이전 학습의 오차를
줄임으로서 이전 학습자를 지원해야 합니다.
이것이 부스팅의 핵심입니다.
부스팅은 각각의 새로운 모델이
이전 모델의 실수를 수정하는
반복적인 프로세스입니다.
Bagging은 병렬로 작동하고
Boosting은 순차적으로 작동합니다.
후속 모델은 이전 모델에 종속되지만,
Bagging의 경우는 그렇지 않습니다.
알고리즘은 다음과 같이 작동합니다.
1. 분류기 빌드
2. 훈련 데이터에 대해 분류기 테스트
2.1 올바르게 분류된 인스턴스에는 낮은 가중치 할당
2.2 잘못 분류된 케이스에는 더 높은 가중치 부여
3. 1단계로 돌아가서 올바르게 분류된 케이스보다
잘못된 케이스에 더 초점을 맞춘 새 분류기 작성
요약하면, 부스팅은 초기 분류기를 생성하고,
그 결과의 오차를 줄이는 형식으로
다음 분류기가 학습하게 되고,
이러한 과정이 지속 반복됩니다.
특정 클래스에 투표하는
모든 분류기의 가중치가 합산되어
가장 큰 합계를 가진 클래스가 선택됩니다.
Stacking
Stacking에서는 각 모델의 결괏값들을
훈련 데이터로 사용하여 다른 모델에 적용합니다.
각 모델은 자체 예측을 생성하고,
이러한 예측은 최종 모델의 입력값으로 사용되며,
최종 예측을 생성합니다.
Stacking은 이질적인 Weak Learner를 고려하여
병렬로 학습한 다음,
Meta-Learner를 훈련하여 결합하여
Weak Learner의 예측을 기반으로
최종 예측을 출력하는 반면,
Bagging과 Boosting은 앙상블에
동질의 Weak Learner를 사용합니다.
Stacking모델은 (레벨 0 모델이라고도 하는)
둘 이상의 기본 모델과
기본 모델의 예측을 통합하는
(레벨 1 모델이라고도 하는) 메타 모델을 포함합니다.
예측해야 하는 종류에 따라 메타 모델이 달라집니다.
분류를 위해 로지스틱 회귀 모델을 사용하고,
회귀를 위한 메타 모델로 선형 회귀 기법을 사용합니다.
알고리즘은 다음과 같이 작동합니다.
1. 훈련 데이터를 K-폴드로 분할
2. 훈련 데이터의 K-1 부분에 대해 독립적인 기본 학습자 교육
3. K번째 부분에 대해 예측
4. 모든 기본 모델에 대해 위의 과정을 K번 반복
5. 훈련 세트의 예측은 메타 학습자라고도 하는
레벨 1 모델의 feature로 사용
6. 그런 다음 레벨 1 모델을 사용하여 최종 예측
일반적으로 Stacking은 개별 모델보다
더 안정적인 예측 성능을 제공합니다.
Stacking접근 방식이 조금 복잡하다는 사실이
주요 단점 중 하나입니다.
컴퓨팅 프로세스는 더 복잡하고
처리 시간이 더 오래 걸릴 수 있습니다.
요약
Bagging:
부트스트랩 집계를 사용합니다.
원본 데이터 세트와 동일한 크기의
여러 데이터 세트를 생성하여
분산을 줄입니다.
Boosting:
모든 모델은 이전 모델을 향상시킵니다.
잘못 분류된 데이터에는
높은 가중치가 부여되고,
올바르게 분류된 데이터에는
낮은 가중치가 부여됩니다.
Stacking:
여러 이기종 분류기의 결과를 결합하여
분류를 개선합니다.
생성할 예측의 종류에 따라 선형 알고리즘
또는 로지스틱 회귀가 투표 대신 사용됩니다.