Random Forests

TaeWoo Lee / Kris·2021년 12월 24일
0
post-thumbnail

랜덤 포레스트

  • 앙상블 방법은 한 종류의 데이터로 여러 머신러닝 학습모델(weak base learner, 기본모델)을 만들어 그 모델들의 예측결과를 다수결이나 평균을 내어 예측하는 방법

  • 랜덤포레스트는 결정트리를 기본모델로 사용하는 앙상블 방법

  • 결정트리들은 독립적으로 만들어지며 각각 랜덤으로 예측하는 성능보다 좋을 경우 랜덤포레스트는 결정트리보다 성능이 좋다.

  • 부트스트랩(Bootstrap) 샘플링

    • 앙상블에 사용하는 작은 모델들은 부트스트래핑(bootstraping)이라는 샘플링과정으로 얻은 부트스트랩세트를 사용해 학습
    • 원본 데이터에서 샘플링을 하는데 복원추출을 한다는 것인데 복원추출은 샘플을 뽑아 값을 기록하고 제자리에 돌려놓는 것
    • 샘플링을 특정한 수 만큼 반복하면 하나의 부트스트랩세트가 완성
    • 복원추출이기 때문에 부트스트랩세트에는 같은 샘플이 반복될 수 있다.
  • 부트스트랩세트의 크기가 n이라 할 때 한 번의 추출과정에서 어떤 한 샘플이 추출 되지 않을 확률

    • n1n\displaystyle \frac {n-1}{n}
  • n회 복원추출을 진행했을 때 그 샘플이 추출되지 않았을 확률

    • (n1n)n\displaystyle \left({\frac {n-1}{n}}\right)^{n}
  • n을 무한히 크게 했을 때

    • limn(11n)n=e1=0.368\displaystyle \lim _{{n\to \infty }}\left({1 - \frac {1}{n}}\right)^{n} = e^{-1} = 0.368
  • 참고: e=limn(1+1n)n\displaystyle e = \lim _{{n\to \infty }}\left(1+{\frac {1}{n}}\right)^{n}

  • 데이터가 충분히 크다고 가정했을 때 한 부트스트랩세트는 표본의 63.2% 에 해당하는 샘플을 가짐

  • 여기서 추출되지 않는 36.8%의 샘플이 Out-Of-Bag 샘플

기본모델(weak learner, 작은 모델들)은 어떻게 합치나요?

  • 부트스트랩세트로 만들어진 기본모델들을 합치는 과정을 Aggregation 이라고 한다.
  • 회귀문제일 경우 기본모델 결과들의 평균으로 결과
  • 분류문제일 경우 다수결로 가장 많은 모델들이 선택한 범주로 예측

랜덤포레스트는 기본모델들의 트리를 만들 때 무작위로 선택한 특성세트를 사용

  • 기본모델 트리를 만드는 방법은 일반 결정트리 알고리즘과 한 가지 다른 점이 있다.
    • 결정트리에서 분할을 위한 특성을 선택할 때, 모든 특성(n개)을 고려하여 최적의 특성을 고르고 분할
    • 랜덤포레스트에서는 특성 n개 중 일부분 k개의 특성을 선택(sampling) 하고 이 k개에서 최적의 특성을 찾아내어 분할
      • k개는 일반적으로 log2nlog_2 n 를 사용

순서형(ordinal) 인코딩

  • 순서형 인코딩은 범주에 숫자를 맵핑합니다. ['a', 'b', 'c'] 세 범주가 있다면 이것을 -> [1, 2, 3] 이렇게 숫자로 인코딩
  • 트리구조 학습에서는 원핫인코딩을 사용하면 문제
    • 범주 종류가 많은(high cardinality) 특성은 원핫인코딩으로 인해 상위노드에서 선택될 기회가 적어
    • 원핫인코딩 영향을 안 받는 수치형 특성이 상위노드를 차지할 기회가 높아지고 전체적인 성능 저하

랜텀포레스트 특성 중요도 비교 (onehot vs ordinal)?

  • 랜덤포레스트에서는 학습 후에 특성들의 중요도 정보(Gini importance)를 기본으로 제공
  • 중요도는 노드들의 지니불순도(Gini impurity)를 가지고 계산
  • 노드가 중요할 수록 불순도가 크게 감소
  • 노드는 한 특성의 값을 기준으로 분리가 되기 때문에 불순도를 크게 감소하는데 많이 사용된 특성이 중요도가 올라갈 것

순서형인코딩은 주의해야 할 것

  • 범주들을 순서가 있는 숫자형으로 바꾸면 원래 그 범주에 없던 순서정보가 생김
  • 순서형 인코딩은 범주들 간에 분명한 순위가 있을때 그 연관성에 맞게 숫자를 정해주는 것이 좋다.

트리 앙상블 모델이 결정트리모델보다 상대적으로 과적합을 피할 수 있는 이유

  • 다르게 샘플링된 데이터로 과적합된 트리를 많이 만들고 그 결과를 평균내 사용하는 모델이 랜덤 포레스트
  • 랜덤포레스트에서 학습되는 트리들은 배깅을 통해 만들어짐
    • bootstrap = true 이때 각 기본트리에 사용되는 데이터가 랜덤으로 선택
  • 각각 트리는 무작위로 선택된 특성들을 가지고 분기를 수행
    • max_features = auto
profile
일단 저지르자! 그리고 해결하자!

0개의 댓글