집단 지성의 힘

업데이트:

7장. 앙상블 학습과 랜덤 포레스트

앙상블 방법론들과 결정 트리를 활용한 앙상블 모델들 기존에 공부한 내용 제외하고 중요한 내용만 요약하기.

앙상블이란?

  • 여러 예측기들을 모아 만든 모델
    • 집단지성
    • 예시
      • 결정 트리를 여러개 만들어서 이를 합침
      • 선형 모델, KNN모델, SVM모델 등 다양한 모델의 predict_proba를 평균내어 확률이 높은 값으로 분류
      • 결정 트리를 만들고, 여기서 오차가 발생하는 부분을 개선하여 다음 결정 트리를 만듦
  • 주요 방법들
    • 배깅, 부스팅, 스태킹 등이 있음

투표 기반 분류기

  • 직접 투표 분류기
    • 여러 분류기를 만들고, 각 분류기의 예측을 모아 가장 많이 선택된 클래스로 예측
    • Like 다수결
  • 간접 투표 분류기
    • 개별 분류기의 예측을 평균내어 확률이 가장 높은 클래스로 분류
      • 여기서 예측을 평균내기 위해, 각 모델들은 predict_proba() 메서드가 존재해야함
      • 여담으로, SVC에서 probability 매개변수를 True로 지정 시 predict_proba() 메서드 사용 가능

배깅과 페이스팅

  • 배깅과 페이스팅 두 방법 모두훈련 세트의 서브셋을 무작위로 구성하여 모델을 학습시키는 방법
    • 어떻게 무작위로 구성하느냐에 있어 차이가 있음
  • 배깅(bagging)
    • 훈련세트에서 랜덤 복원 추출 (부트스트랩)
  • 페이스팅(pasting)
    • 중복 허용 x
    • 비복원 랜덤 추출
  • 일반적으로는 배깅을 더 선호.
    • 다만, 페이스팅은 편향이 배깅에 비해 낮음
    • cpu에 여유 있으면 교차 검증으로 두 모델 비교하는 선택도 좋음

OOB 평가 (Out Of Bag)

  • 부트스트랩을 하면, 전체 샘플에서 안 쓰이는 샘플이 꼭 쓰임
  • 이렇게 안 쓰이는 데이터는 평균적으로 30~40% 가량.
    • 이 데이터들을 검증 세트로 활용하면 됨.

랜덤 패치와 랜덤 서브스페이스

  • 랜덤 패치 방식
    • 피처와 샘플을 모두 샘플링하는 것
  • 랜덤 서브스페이스 방식
    • 특성은 샘플링, 피처는 모두 사용하는 것

랜덤 포레스트

  • 배깅 방식을 적용한 결정 트리의 앙상블
  • 하나의 트리를 만들 때, 특성을 임의로 선택하여 무작위성을 더 부여.
  • 독립적인 트리들을 만들기 떄문에, 여러 코어 활용 가능

부스팅

  • 약한 학습기를 여러 개 연결하여 강한 학습기를 만드는 앙상블 방법
  • 인기 있는 모델은 에이다 부스트(AdaBoost)와 그레이디언트 부스팅(gradient boosting)

에이다 부스트

  • 이전에 만들어진 모델에서 과소적합된 훈련 샘플의 가중치를 더 높임
    • 위와 같은 방식을 지속 수행
    • 결국 이전에 만들어진 모델을 보정하는 모델을 만들어내는 것.

그래이디언트 부스팅

  • 맨 처음에 만든 모델의 오차에 대해 보정하는 모델을 만들어나감
    • 마치 선형 회귀에서 비용 함수에서 경사하강법을 사용하는 것처럼 오차 함수를 계속 만들어나감
    • 그러면 처음 만든 모델의 오차가 크더라도, 이후 오차가 계속 보정됨.
    • 여기서 이 오차를 얼마나 보정할지 학습률 매개변수를 통해 조절할 수 있음
  • 그레이디언트 부스팅는 각 트리가 훈련할 때 사용할 훈련의 샘플의 비율을 조정할 수 있음
    • 예를 들어, subsample=0.25라고 하면 각 트리는 무작위로 선택된 25%의 훈련 샘플로 학습
    • 분산은 낮아지고, 편향은 높아짐.
    • 이를 확률적 그레이디언트 부스팅이라고 하며,
    • XGBoost 라이브러리에서 잘 구현해놓았음. (Python)

댓글남기기