07일차 [ Ensemble ] - votus777/AI_study GitHub Wiki

 오늘 실습했던 앙상블과는 별개로 머신 러닝에서의 앙상블에 대해 알아본다

앙상블 ( Ensemble )

Bagging

  • 여러 개의 모델을 조합시켜 학습시키는 모델링 기법
  • 딥러닝보다 더 넓은 범위인 머신 러닝에 포함되는 개념이다.

Bagging 티배깅 아니다


Bootstrap Aggregating의 줄임말     

Aggregating : 집계

  • 모집단에서 데이터를 반복적으로 샘플링하고,
    이 조각난 데이터로 학습을 한 다음,
    나온 결과들을 모아 최종 모델을 만들고 최종 결과값을 구한다.

  • 병렬 구성 -> 일반적인 모델을 만들자!

  • 통계학에서도 쓰이고 ML에서도 쓰인다.
    Bagging의 가장 대표적인 모델이 바로 Random Forest.

  • 여기서 왜 랜덤포레스트가 나오냐면 Bagging의 기본 개념이 바로 결정트리인데
    기초 분류기라고도 불리는 이 결정 트리들을 모아놓은게 바로 랜덤포레스트
    나무가 모이니 숲이라는 참으로 단순하지만 직관적인 네이밍

  • 각각의 트리는 작은 편향과 큰 분산을 갖기 때문에 overfitting이지만
    트리들이 모이면서 편향을 유지하면서 분산을 감소시켜 모일 수록 성능이 올라간다. (노이즈 감소)

  • 결정 트리는 정보의 엔트로피 어쩌구 저쩌구.. 거기까지는 안들어갔다

  • 연속적인 데이터에서는(Contiuous Data)
    모든 모델들의 결과값에 평균을 취한 값이 최종 결과값이 되고

  • 분류에서는 (Categorical Data), 다중 투표 나뉜 모델들 중 4개가 A, 2개가 B를 선택하면 다수결로 최종결과는 A가 된다.

  • 단, Bagging은 데이터에 잡음이 많거나 데이터에 의존성이 있는 경우에는 성능이 떨어진

    장점 : Overfitting을 피할 수 있음, 간편하다, 빠르다   
    
    단점 : 차원이 높고(?) 희소한 데이터에는 맞지 않음, 선형 모델보다는 느림 
    
  • Bagging과 반대로 중복을 허용하지 않는 샘플링 방식을 Pasting이라 한다.


Boosting


  뭘 부스팅 하냐 -> Gradient Boosting, adaptive boosting(AdaBoost), XGBoost

boosting

  • 작고 독립적인 모델 안에서 값을 예측하고
    다른 모델과의 오차를 보완하는 방향으로 모델을 추가하는 알고리즘

  • 경사하강법과 손실함수를 사용하여 bias 값을 보정해 나간다.

  • 역시 많아질수록 성능이 좋아진다.

  • 직렬 구성 -> 어려운 문제를 맟추자!

     장점 : 성능이 좋다, error가 적다
    
     단점 : 훈련 시간이 길다(느리다), 매게 변수에 민감하다, 특이값에 취약하다, overfitting 될 가능성이 높다   
            (왠지 단점이 더 많은 것 같은데 성능이 워낙 강력해서 kaggle도 씹어먹고 다녔다 카더라) 
            (그래도 딥러닝 보다는 빠르다)
    

reference


이것저것 싹 다 합쳐서 만든 Meta Modeling a.k.a Stacking 기법도 있다. 다 좋은데 너무 연산이 많아서 무겁다는 것이 흠