스태킹 앙상블
스태킹(Stacking)은 개별적인 여러 알고리즘을 서로 결합해 예측 결과를 도출한다는 점에서 앞에서 소개한 bagging, boosting과 공통점을 가지고 있다. 하지만 가장 큰 차이점은 개별 알고리즘으로 예측한 데이터를 기반으로 다시 예측을 수행한다는 것이다. 즉, 개별 알고리즘의 예측 결과 데이터 세트를 최종적인 메타 데이터 세트로 만들어 별도의 ML알고리즘으로 최종 학습을 수행하소 테스트 데이터를 기반으로 다시 최종 예측을 수행하는 방식이다.
-> 이렇게 개별 모델의 예측된 데이터 세트를 다시 기반으로 하여 학습하고 예측하는 방식을 메타 모델이라고 한다.
스태킹 모델은 두 종류의 모델이 필요하다. 첫 번째는 개별적인 기반 모델이고, 두 번째는 기반모델의 예측 데이터를 학습 데이터로 만들어 학습하는 최종 메타 모델이다. 스태킹 모델의 핵심은 여러 개별 모델의 예측 데이터를 각각 스태킬 형태로 결합해 최종 메타 모델의 학습용 피처 데이터 세트와 테스트용 피처 데이터 세트를 만드는 것이다.
스태킹을 혀실 모델에 적용하는 경우는 그렇게 많지 않지만 캐글과 같은 대회에서 높은 순위를 차지하기 위해 조금이라도 성능 수치를 높여야 할 경우 자주 사용된다. 스태킹을 적용할 때는 많은 개별 모델이 필요하다. 2~3개의 개별 모델만을 결합해서는 쉽게 예측 성능을 향상시킬 수 없으며, 스태킹을 적용한다고 해서 반드시 성능 향상이 되리라는 보장도 없다.
기본 스태킹 모델
개별 알고리즘으로부터 예측된 예측값을 칼럼 레벨로 옆으로 붙여서 피처 값으로 만들어, 최종 메타 모델인 로지스틱 회귀에서 학습 데이터로 다시 사용 -> 반환된 예측 데이터 세트는 1차원 형태의 ndarray이므로 먼저 반환된 예측 결과를 행 형태로 붙인 뒤, 넘파이의 transpose()를 이용해 행과 열의 위치를 바꾼 ndarray로 변환하면 된다.
개별 모델의 예측 데이터를 스태킹으로 재구성해 최종 메타 모델에서 학습하고 예측한 결과, 정확도가 개별 모델들보다 정확도가 향상된 것을 볼 수 있다.(물론 항상 향상되는 것은 아니다.)
CV세트 기반의 스태킹
CV세트 기반의 스태킹 모델은 과적합을 개선하기 위해 최종 메타 모델을 위한 데이터 세트를 만들 때 교차 검증 기반으로 예측된 결과 데이터 세트를 이용한다. CV세트 기반 스태킹은 개별 모델들이 각각 교차 검증으로 메타 모델을 위한 학습용 스태킹 데이터 생성과 예측을 위한 테스트용 스태킹 데이터를 생성한 뒤 이를 기반으로 메타 모델이 학습과 예측을 수행한다.
Step1:
각 모델별로 원본 학습/테스트 데이터를 예측한 결과 값을 기반으로 메타 모델을 위한 학습용/테스트용 데이터를 생성
Step2:
Step1에서 개별 모델들이 생성한 학습용 데이터를 모두 스태킹 형태로 합쳐서 메타 모델이 학습할 최종 학습용 데이터 세트를 생성한다. 마찬가지로 각 모델들이 생성한 테스트용 데이터를 모두 스태킹 형태로 합쳐서 최종 테스트 데이터 세트를 생성한다. 메타 모델은 최종적으로 생성된 학습 데이터 세트와 원본 학습 데이터의 레이블 데이터를 기반으로 학습한 뒤, 최종적으로 생성된 테스트 데이터 세트를 예측하고, 원본 테스트 데이터의 레이블 데이터를 기반으로 평가한다.
예제에서는 개별 모델의 알고리즘에서 파라미터 튜닝을 최적으로 하지 않았지만, 스태킹을 이루는 모델은 최적으로 파라미터를 튜닝한 상태에서 스태킹 모델을 만드는 것이 일반적이다. 스태킹 모델은 분류뿐만 아니라 회귀에도 적용이 가능하다.
정리
분류를 위해 일반적으로 가장 많이 사용되는 앙상블 기법은 대부분 결정 트리 기반의 다수의 약한 학습기를 결합해 변동성을 줄여 예측 오류를 줄이고 성능을 개선하는 방식이다. 결정 트리 알고리즘은 정보의 균일도에 기반한 규칙트리를 만들어서 예측을 수행한다. 결정 트리는 다른 알고리즘에 비해 비교적 직관적이어서 어떻게 예측 결과가 도출되었는지 그 과정을 쉽게 알 수 있다. 결정 트리의 단점으로는 균일한 최종 예측 결과를 도출하기 위해 결정 트리가 깊어지고 복잡해 지면서 과적합이 쉽게 발생하는 것이다.
앙상블 기법은 대표적으로 배깅과 부스팅으로 구분될 수 있으며, 배깅 방식은 학습 데이터의 중복을 허용하면서 다수의 세트로 샘플링하여 이를 다수의 약한 학습기가 학습한 뒤 최종 결과를 결합해 예측하는 방식이다. 대표적인 배깅 방식은 랜덤 포레스트이다. 랜덤 포레스트는 수행시간이 빠르고 비교적 안정적인 예측 성능을 제공한다.
현대의 앙상블 기법은 배깅보다는 부스팅이 더 주류를 이루고 있다. 부스팅은 학습기들이 순차적으로 학습을 진행하면서 예측이 틀린 데이터에 대해서는 가중치를 부여해 다음번 학습기가 학습할 때에는 이전에 예측이 틀린 데이터에 대해서는 보다 높은 정확도로 예측할 수 있도록 해준다.
XGBoost와 LightGBM은 현재 가장 각광을 받고 있는 부스팅 기반 머신러닝 패키지이다. XGBoost의 경우 많은 캐글 경영대회에서 우승을 위한 알고리즘으로 불리면서 명성을 쌓아왔다. LightGBM또한 XGBoost보다 빠른 학습 수행 시간에도 불구하고 XGBoost에 버금가는 예측 성능을 보유하고 있다.
스태킹 모델은 여러개의 개별 모델들이 생성한 예측 데이터를 기반으로 최종 메타 모델이 학습할 별도의 학습 데이터 세트와 예측할 테스트 데이터 세트를 재생성하는 기법이다. 스태킹 모델의 핵심은 바로 메타 모델이 학습할 학습 데이터 세트와 예측 데이터 세트를 개별 모델의 예측값들을 스태킹 형태로 결합해 생성하는 데 있다.
'Machine Learning' 카테고리의 다른 글
[파이썬 머신러닝 완벽가이드(위키북스)] : Regression 회귀 part2 규제 선형 모델 - 릿지, 라쏘, 엘라스틱넷 (0) | 2021.11.25 |
---|---|
[파이썬 머신러닝 완벽가이드(위키북스)] : Regression 회귀 part1 (0) | 2021.11.23 |
[파이썬 머신러닝 완벽가이드(위키북스)] : 분류 part4 캐글 신용카드 사기 검출 실습 (0) | 2021.11.21 |
[파이썬 머신러닝 완벽가이드(위키북스)] : 분류 part3 (GBM, XGBoost, LightGBM) (0) | 2021.11.21 |
[파이썬 머신러닝 완벽가이드(위키북스)] : 분류 part2 (0) | 2021.11.20 |
댓글