랜덤 포레스트 (Random Forest) 정리

2020. 8. 15. 01:51캐리의 데이터 세상/캐리의 데이터 공부 기록

반응형

랜덤 포레스트는 언제 왜 쓰는 것인가에 대한 기본적인 질문에 대해 영상들 찾아보면서 정리한 내용입니다. 방대한 양을 다루는 머신러닝 교재에서는 아주 짤막하게만 다루고 바로 빌트인 모델을 돌리며 패키지 활용에만 중점을 맞추다 보니 궁금증 많은 초심자 1인으로 얕게 찾아본 내용들. 추가 자료 찾을 때마다 계속 업데이트.

랜덤 포레스트 개요

먼저 머신러닝 과정은 파이썬에서 사이킷런(Scikit Learn) 라이브러리를 사용하고 있기에 사이킷런 알고리즘 치트 시트를 다시 살펴보고,

 

사이킷런 알고리즘 치트시트

 

Sources : scikit-learn.org

Random Forest란? (이하 줄여서 RF)

기계 학습에서의 랜덤 포레스트(영어: random forest)는 분류, 회귀 분석 등에 사용되는 앙상블 학습 방법의 일종으로, 훈련 과정에서 구성한 다수의 결정 트리로부터 부류(분류) 또는 평균 예측치(회귀 분석)를 출력함으로써 동작. 랜덤 포레스트는 다수의 결정 트리들을 학습하는 앙상블 방법이다. 랜덤 포레스트는 검출, 분류, 그리고 회귀 등 다양한 문제에 활용되고 있다. (출처 : 위키백과)

 

랜덤포레스트 핵심 개요 : Diversity, Random 확보

1) 여러 개의 Training Data를 생성해 각 데이터마다 개별 Decision Tree를 구축한다 : Bagging

2) Decision Tree 구축 시 변수를 무작위로 선택한다 : Random Subspace

Bagging과 Random Subspace 핵심 키워드 기억하자!!

 

Bagging (Bootstrap Aggregating) 이란?

 

Bagging 배깅 프로세스

 

출처 : www.researchgate.net/

  • 배깅은 각각의 bootstrap 샘플로부터 생성된 모델을 합친 것

 

Random Forest outline

 

출처 : www.researchgate.net/

 

  • 각 모델은 다른 학습 데이터셋을 사용한다.
  • 각 데이터셋은 복원 추출 (Sampling with replacement - 중복 허용), 원래 데이터 수만큼의 크기를 갖도록 샘플링
  • 개별 데이터셋을 부스트랩 셋이라고 부름

 

RF 알고리즘이 주로 쓰이는 분야

  • Banking : 충성고객 평가 (고객 데이터 토대로 충성도 패턴 평가 - 가령 큰 금액 대출 이자를 잘 갚을지 등), 비수익성 고객 평가 (대출 심사 전에 고객 패턴에 따라 분석 후 수익성 판단)
  • Medicine : 적합한 약 조합 찾기, 환자 의료 기록 분석해 병명 판단
  • Stock Market : 주식 변동성, 특정 주식 투자 시 예상 손실 및 수익 등
  • E-commerce : small segment의 추천 엔진으로 사용, 비슷한 구매 성향을 가진 고객 데이터 바탕으로 물건 추천 / 큰 데이터 셋에서는 high-end GPU 시스템이 필요 (cloud hosted desktop 사용 가능)

 

Result Aggregation

  • Majority Voting
  • Weighted Voting (weight = training accuracy of individual model)
  • Weighted Voting (weight = predicted probability for each class)

 

Generalization Error

  • 각각의 개별 tree는 과적합(Overfitting)될 수 있음
  • RF는 Tree수가 충분히 많을 때 Strong Law of Large Numbers에 의해 과적합되지 않고 그 에러는 limiting value에 수렴한다.

 

 

 

  • p는 Decision tree 사이 평균 상관관계
  • s는 올바로 예측한 tree와 잘못 예측한 tree수 차이의 평균

 

  • 개별 tree의 정확도가 높을 수록 s는 증가
  • Bagging과 random subspace 기법은 각 모델들의 독립성, 일반화, 무작위성을 최대화시켜 모델 간의 상관관계인 p를 감소시킴
  • 개별 tree의 정확도, 독립성 높을수록 RF 성능은 높아진다

 

랜덤 포레스트 변수의 중요도

 

  • RF는 선형회귀모델/로지스틱 회귀 모델과는 달리 개별 변수가 통계적으로 얼마나 유의한지에 대해 정보를 제공하지 않는다.(알려진 확률분포를 가정하지 않음). Decision Tree를 가정하고 있기에 순수한 비모수적 모델임
  • 대신 간접적 방식으로 변수 중요도를 결정한다

 

OOB (Out of Bag)

랜덤 포레스트를 구성하는 과정에서 각 데이터 포인트에 대한 OOB-오차(out-of-bag error)가 구해진다. OOB(out-of-bag) 데이터는 부스트랩을 통한 임의 중복 추출 시 훈련 데이터 집합에 속하지 않는 데이터를 말하며, OOB-오차는 이 데이터의 실제 값과 각 트리로부터 나온 예측 결과 사이의 오차로 정의된다.(위키피디아)

 

 

OOB Evaluation

 

Sources: deepnote blog

 

RF 하이퍼 파라미터 최적화 (Optimizing Random Forest Hyperparameters)

  • Decision Tree의 수 : Strong law of large numbers를 만족시키기 위해 2,000개 이상의 tree들이 필요하다
  • DT에서 노드 분할 시 무작위로 선택되는 변수의 수 : 대략 classification에서는 변수의 수의 제곱근, Regression에서는 변수의 수/3

* 하기 7가지 요소의 최적화 설명해 놓은 블로그 글 참고(링크)

max_depth
min_sample_split
max_leaf_nodes
min_samples_leaf
n_estimators
max_sample (bootstrap sample)
max_features

 

참고 사이트 및 영상

 

유튜브 알고리즘에 따라 검색하다가 찾은 RF 관련 영상들. 

 

반응형