Machine Learning/Algorithm

Random Forest (랜덤 포레스트)

고슴군 2019. 9. 23. 21:14

개별 트리 모델의 단점

- 계층적 구조로 인해 중간에 에러가 발생하면 다음 단계로 에러가 계속 전파

- 학습 데이터의 미세한 변동에도 최종 결과 크게 영향

- 적은 개수의 노이즈에도 크게 영향

- 나무의 최종노드 개수를 늘리면 과적합 위험 (Low bias, Large Variance)

- 해결 방안으로, Random Forest가 있음

 

앙상블 (랜덤 포레스트의 배경)

- 여러 Base 모델들의 예측을 다수결 법칙 또는 평균을 이용해 통합하여 예측 정확성을 향상시키는 방법

- 다음 조건을 만족할 때 앙상블 모델은 Base 모델보다 우수한 성능을 보여줌

  1. Base 모델들이 서로 독립적
  2. Base 모델들이 무작위 예측을 수행하는 모델보다 성능이 좋은 경우
    ex) 5개의 binary classifier를 base 모델로 가지는 앙상블 모델의 오류율은 아래 그림과 같이 나타남. Base 모델의
        성능이 무작위 모델보다는 좋아야 함

- 의사결정나무모델은 앙상블 모델의 base 모델로써 활용도가 높음

  • Low computational complexity : 데이터의 크기가 방대한 경우에도 모델을 빨리 구축할 수 있음
  • Non-parametric : 데이터 분포에 대한 전제가 필요하지 않음

 

랜덤 포레스트 개요

- 다수의 의사결정나무모델에 의한 예측을 종합하는 앙상블 방법

- 일반적으로 하나의 의사결정나무모델 보다 높은 예측 정확성을 보여줌

- 관측치 수에 비해 변수의 수가 많은 고차원 데이터에서 중요 변수 선택 기법으로 널리 활용됨

 

 

 

핵심 아이디어 : Diversity, Random 확보

  1. 여러 개의 training data를 생성하여 각 데이터마다 개별 의사결정나무모델 구축  →  Bagging
  2. 의사결정나무모델 구축 시 변수 무작위로 선택  →  Random subspace

앙상블 모델의 성능이 좋기 위한 전제 조건이, diversity와 randomness를 확보하는 것이다.

각각의 모델이 bootstrap으로 diversity를 확보하고.. random subspace로 분기를 나누면서 randomness를 확보하는 것.

- diversity를 확보하면서 각 모델을 이용하여 다양한 방면의 정보를 획득할 수 있을 것 (앙상블 모델은 각 base 모델이 독립적이어야 좋은데, 그러한 부분을 어느정도 보장하는 것)

- randomness를 확보함으로써 모델의 variance를 줄여줄 수 있을 것 같음 (변수 많이 select하면, 당연히 복잡도 높아져서 variance 또한 클 것. 일반화 성능을 높이는 효과)

- bagging과 random subspace 기법은 각 모델들의 독립성, 일반화, 무작위성을 최대화 시켜 모델간의 상관관계 a를 감소시킴

- RF는 어떤 확률분포를 가정하지 않기 때문에, 비모수적(Non-parametric) 모델임

 

Bagging (Bootstrap Aggregating)

- 각각의 bootstrap 샘플로부터 생성된 모델을 합침

- Bootstrapping ( → sampling)

  • 각 모델은 서로 다른 학습 데이터셋을 이용
  • 각 데이터셋은 복원 추출(sampling with replacement)을 통해 원래 데이터의 수 만큼의 크기를 갖도록 샘플링
  • 개별 데이터셋을 bootstrap set이라 부름

- Result Aggregating

  • For classification problem
    • Majority voting
    • Weighted voting (weight = training accuracy of individual models)
    • Weighted voting (weight = predicted probability for each class)

- Bagging: algorithm

 

Random Subspace

 

- 즉, 의사결정나무의 분기점을 탐색할 때, 원래 변수의 수보다 적은 수의 변수를 임의로 선택하여 해당 변수들만을 고려대상으로 함

 

Generalization Error

- 각각의 개별 tree는 과적합될 수 있음

- Random forest는 tree 수가 충분히 많을 때 Strong Law of Large Numbers에 의해 과적합 되지 않고 그 에러는
  limiting value에 수렴됨

- 개별 tree의 정확도가 높을수록 s 증가

- Baggingrandom subspace 기법은 각 모델들의 독립성, 일반화, 무작위성을 최대화시켜 모델간의 상관관계 ρ 를
  감소시킴

- 개별 tree의 정확도, 독립성이 높을수록 random forest의 성능이 높아짐

중요 변수 선택

- 변수의 중요도

  • 랜덤 포레스트는 선형 회귀모델/로지스틱 회귀모델과는 달리 개별 변수가 통계적으로 얼마나 유의한지에 대한 정보를 제공하지 않음 (∵ 확률분포를 가정하지 않음 (선형회귀는 error가 정규분포임을 가정))
  • 대신 랜덤 포레스트는 다음과 같은 간접적인 방식으로 변수의 중요도를 결정

1단계 : 원래 데이터 집합에 대해서 Out of bag(OOB) error를 구함

2단계 : 특정 변수의 값을 임의로 뒤섞은 데이터 집합에 대해서 OOB error를 구함

3단계 : 개별 변수의 중요도는 2단계와 1단계 OOB error 차이의 평균과 분산을 고려하여 결정

 

- Out of bag (OOB) → About 33% of original data are not selected in bootstrap

  • Used for out-of-bag error and variable importance
  • Bagging을 사용할 경우 bootstrap set에 포함되지 않는 데이터들을 검증 집합으로 사용함

 

- 중요 변수 선택 

            (4) 에서 sd 나눠주는 것은 scaling의 역할. 변동이 너무 큰 경우에 평균이 높더라도 중요도 좀 낮춰주기 위해.

 

하이퍼 파라미터

  1.  Decision tree의 수 (n_estimators)
    - Strong law of large numbers 을 만족시키기 위해 2,000개 이상의 decision tree 필요
      (그러나, 아닌 경우도 많이  있음. search 및 최적화가 필요) (default 값이 대부분 10)
  2. Decision tree에서 노드 분할 시 무작위로 선택되는 변수의 수 (Max_features)
    - 일반적으로 변수의 수에 따라 다음과 같이 추천됨 (Diaz-Uriarte et el., 2006) (그러나, guide line일 뿐 search 필요)
    - 이 값이 크면 performance가 향상될 수 있지만, overfitting의 가능성 존재
    - Classification : sqrt(변수의 수)
    - Regression : 변수의 수/3
    - 옵션 : auto(제한 없음), sqrt(전체 feature 갯수에 square root), log2 (전체 feature 갯수에 log2)
  3. Max_depth
    - 각 트리의 최대 depth를 의미함
    - Default 값은 대부분 None. 즉, 모든 leaf가 pure해질 때 까지 트리를 만드는 것.
     (Pure하다는 것은, 하나의 leaf에 해당하는 데이터가 동일한 class를 가지는 상태임)
  4. Min_sample_leaf 
    - 각 leaf 노드에서의 최소 데이터 갯수
    - Default 값은 대부분 1. 즉, 모든 leaf 노드는 1개 이상의 데이터를 가져야 함
    - 특히 regression 문제에서, smoothing 효과와 관련 있음
    - Training dataset의 갯수를 보고 결정해야 함
  5. Min_sample_split- Leaf 가 아닌 노드(internal node)에서의 최소 데이터 갯수
    - Default 값은 대부분 2. 즉, split 되기 전의 internal node는 2개 이상의 데이터를 가져야 함
    - 값이 너무 크면 underfitting 가능성 있음
    - Training dataset의 갯수를 보고 결정해야 함

Cross-validation 과 random search를 통해 (1, 3, 4, 5)  혹은 (1, 3, 4) 최적화 할 수 있다.

Aggregate 방법의 경우, classification이면 voting, regression이면 average가 default로 결정되어 있음

 

 

 

 

랜덤 포레스트 알고리즘

 

Advantages

 

- Overall

  • For many data sets, it produces a highly accurate classifier (Almost same as SVMs and NNs)
  • It is faster to train and has fewer parameters than SVMs and NNs (good for large databases)
  • It is interpretable 

- Training

  • It generates an internal unbiased estimate of the generalization error (Cross validation is unnecessary) (∵ OOB error)
  • Resistance to over training

- Data

  • Ability to handle data without preprocessing
  • Data does not need to be rescaled, transformed, or modified
  • Resistant to outliers
  • It can handle thousands of input variables without variable deletion (Good for problems where k>>N)

 

[참조]

김성범 교수님의 https://www.youtube.com/watch?v=lIT5-piVtRw (랜덤포레스트 모델) 을 요약한 것입니다. 

https://towardsdatascience.com/optimizing-hyperparameters-in-random-forest-classification-ec7741f9d3f6 (Hyper-parameter)
https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html (Hyper-parameter)

https://medium.com/@ODSC/optimizing-hyperparameters-for-random-forest-algorithms-in-scikit-learn-d60b7aa07ead (Hyper-parameter)

반응형