ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 앙상블(Ensemble) 모형 / Bagging과 boosting
    머신러닝 with R 2019. 7. 28. 16:16

    데이터 분석에 있어서 모델링은 최적의 알고리즘을 선택함으로써 최종 모델을 도출하는 데 있어서 큰 역할을 한다.

    앙상블(ensemble)이란 '함께, 동시에, 한꺼번에, 협력하여'라는 의미의 프랑스어이다. 이 의미와 같이 데이터 분석에서도 여러 개의 값을 하나로 하치는 방법을 '앙상블'이라고 말한다. 이는 모델링 기법 중에서 머신러닝에서 가장 많이 사용되고 있는 기법으로 여러 개의 분류 모형에 의한 결과를 종합하여 분류의 정확도를 높이는 방법이다. 이 모형은 여러 개의 weak leaner를 결합한다면 single learner 보다 더 나은 성능을 얻을 수 있다는 일종의 '집단 지성'으로부터 아이디어가 나왔다.

    일반적으로 학습에서 나타나는 오류는 1) 지나친 치우침(bias)으로 인한 underfitting 혹은 높은 분산으로 인한 overfitting이다.  앙상블 모형은 여러 모형의 평균을 취함으로써 어느 쪽에도 치우치지 않는 결과를 얻을 수 있으며, 여러 개 의 모형의 의견을 취합함으로써 분산을 감소시킬 수 있다. 앙상블 모형의 대표적인 알고리즘에는 '배깅(bagging)'과 '부스팅(boosting)'이 있다. 

     

     

     

    배깅(Bagging)

    배깅이란, boostrap aggregating의 약어로 데이터를 가방(bag)에 쓸어 담아 복원 추출하여 여러 개의 표본을 만들어 이를 기반으로 각각의 모델을 개발한 후에 결과를 하나로 합쳐 하나의 모델을 만들어 내는 것이다. 

     

    배깅을 통해서 얻을 수 있는 효과는 '알고리즘의 안정성'이다. 단일 seed 하나의 값을 기준으로 데이터를 추출하여 모델을 생성해 나는 것보다, 여러 개의 다양한 표본을 사용함으로써 모델을 만드는 것이 모집단을 잘 대표할 수 있게 된다. 

    또한 명목형 변수 (Categorical data)의 경우 투표(voting) 방식, 혹은 가장 높은 확률값으로 예측 결과값을 합치며 연속형 변수(numeric data)의 경우에는 평균(average)으로 값을 집계한다. 또한 배깅은 병렬 처리를 사용할 수 있는데, 독립적인 데이터 셋으로 독립된 모델을 만들기 때문에 모델 생성에 있어서 매우 효율적이다. 대표적인 알고리즘에는 Random Forest 가 있다. 

     

     

    [참고] https://swalloow.github.io/bagging-boosting

     

    부스팅(Boosting)

    배깅은 일반적인 모델을 만드는 것을 의미했다면, 부스팅은 틀린 문제를 노트에 적고 이것들에 집중을 하는 목적의 오답노트와 비슷한 개념으로 생각하면 되는데 즉, 틀린 케이스에 가중치를 줌으로써 이를 해결하는 것에 초점을 맞추는 모델이다.

     

    부스팅을 하는 목적은 '정확성을 향상'시키기 위함에 있다. 앞서 만든 모델이 오분류로 인한 케이스에 더 높은 가중치를 부여함으로써 이를 더 잘 해결할 수 있는 모델이 되도록 모델을 수정해 나간다. 연속형 변수(numeric data)는 가중 평균(weighted aveage, median)으로 예측 결과값을 합친다. 배깅이 병렬적(parallel)으로 학습한다면 부스팅은 순차적(sequential)으로 모델만든다고 할 수 있다. 정답보다 오답에 더 높은 가중치를 줌으로써 오답에 더욱 집중 할 수 있게 한다. 이로써 정확도가 더 높아질 수 있지만 그만큼 이상치에 취약해질 수 있다. 대표적인 알고리즘에는 AdaBoost, xgBoost, GBM 등이 있다. 이중에서 xgBoost를 가장 많이 사용한다.

     

    회기 모형에 대한 부스팅 기법 (Adaptive Boosting, AdaBoost)의 방법을 살펴보면

    1) 분석표본에 모형을 적합시켜 예측치와 오차를 산출

    2) 오차가 큰 개체에 대해서는 큰 가중치를, 오차가 작은 개체에는 작은 가중치를 부여

    3) 변경된 가중치로 모형을 재적합하고 1) 단계부터 다시 실행 (일정 횟수 반복)

    4) 최종적으로 이제까지 도출된 모형을 총합. 

    •  집계 방법: Weighted median (가중 중간값, 모형가중치가 고려된 중간값)

     

     

     

    배깅 vs. 부스팅

    배깅과 부스팅은 모두 의사결정나무의 안정성을 높인다는 공통점이 있다. 하지만 치우침은 부스팅이 줄일 수 있고, 과적합 문제의 해결은 배깅만이 할 수 있다. 둘 다 표본추출에 있어서 데이터셋에서 복원 랜덤 추출하지만 부스팅은 가중치를 사용한다는 차이가 있다. 또한 배깅은 병렬적으로 모델을 만들지만, 부스팅은 하나의 모델을 만들어 그 결과로 다른 모델을 만들어 나가는데 즉 순차적으로 모델을 완성시켜 나간다. 또한 가중치에 대해서도 배깅은 1/n으로 가중치를 주지만, 부스팅은 오차가 큰 개체에 대해 더 높은 가중치를 부여한다. 마지막으로 훈련 및 평가 항목에 대해서도 차이점이 있는데, 배깅은 트레이닝 셋을 만들어 그냥 계속 가지고 있는 반면, 부스팅은 트레이닝 셋을 만든 후에 업데이트 및 조정하는 과정이 추가가 된다.

     

    bagging과 boosting 차이점 [참고] https://statkclee.github.io/ml/ml-tree-model.html#1_%EB%82%98%EB%AC%B4%EA%B8%B0%EB%B0%98_%EB%AA%A8%ED%98%95_1_2

     

     

     

     

    [참고] 실무에서 써먹는 머신러닝 with R

    반응형

    댓글

Designed by Tistory.