기초지식

Random Forest

cho.nii 2024. 5. 8. 18:13
분류, 회귀 분석 등에 사용되는 앙상블 학습 방법의 일종으로, 훈련 과정에서 구성한 다수의 결정 트리로부터 분류 또는 회귀 분석을 출력함으로써 동작한다. 

즉, 다수의 결정 트리들을 학습하는 앙상블 기법으로 검출, 분류, 회귀 등 다양한 문제에 활용되고 있는 알고리즘이다. 

 

랜덤 포레스트는 '다수의 결정 트리"들을 학습하는 앙상블 기법이다. 여기서 (의사)결정 트리란?

  • decision tree, 말 그대로 결정을 내리기 위해 사용하는 트리로, 결정 과정을 간단한 문제들로 이루어진 계층 구조로 나눈다.
  • 일련의 if-else로 이루어진 나무모형으로 중간마디(internal node)와 끝마디(leaf node)로 구성된다.

** 앙상블 학습이란, 다수의 기초 알고리즘(base algorithm)을 결합하여 더 나은 성능의 예측 모델을 형성하는 것을 말하며, 사용 목적에 따라 bagging, boosting, stacking으로 분류된다. 

 

랜덤 포레스트는 의사결정나무에 배깅(bootstrap aggregation, bagging)이라는 앙상블 학습(ensemble learning)을 적용한 모델이다. ** bagging은 분산(variance)을 줄이기 위해 사용된다. 

 

랜덤포레스트 예시

 

 

Ensemble에 대해 큰 관점에서 알아보기 :: Voting과 Bagging, 그리고 Boosting 

 

 

  • Voting: "서로 다른 알고리즘을 사용"해 예측한 결과를 다수결이나 평균으로 결정하는 방식 
  • Bagging: "같은 알고리즘을 사용하되 데이터를 무작위로 추출해 다양한 서브 데이터셋을 생성"하고 이들을 병렬적으로 학습한 결과를 다수결이나 평균으로 결정하는 방식 (Random Forest) 
  • Boosting: "같은 알고리즘을 사용하면서 앞서 학습한 결과를 가지고 다음 학습기가 순차적으로 학습하면서 오차를 줄여나가는" 방식 (Gradient Boosting, XGBoost) 

 

다시, 랜덤 포레스트란?

의사결정나무를 bagging 방식으로 만든 알고리즘으로, 부트스트랩을 통해 다양한 서브 데이터셋을 생성하고 여러 개의 의사결정나무가 각각의 데이터셋을 학습하고 결과를 취합함으로써 단일 의사결정나무가 가질 수 있는 과적합 문제를 해결할 수 있는 알고리즘이다. 

부트스트랩(Bootstraping)?
데이터를 샘플링하는 방법으로, 데이터에서 샘플링을 할 때 복원추출을 한다는 특징을 가진다. 

 

이렇게, 부트스트랩한 데이터셋을 통해 작은 결정 나무(Decision Tree) 여러개를 만들어 숲(Forest)을 이루는 방식이다.

** 한명의 똑똑한 사람보다 100명의 평범한 사람이 모였을때 문제해결을 더 잘 하는 원리와 같다. 

 

Decision Tree 여러개를 만들때, 특성들을 무작위(Random)로 선택하기 때문에 Random이라는 표현이 사용되는 것이며, 부트스트랩에서도 랜덤으로 데이터를 샘플링하므로 랜덤한 트리를 만든다고 해석할 수 있다. 

 

랜덤 포레스트 작동방식

  • 모 데이터에서 n개 샘플 데이터를 중복을 허용하여 무작위로 추출하고, 여러 개의 의사 결정나무 학습기에서 동시에 학습이 이뤄진다.
  • 모든 특성(feature)을 활용하여 노드를 분할하는 의사결정나무와는 달리, 랜덤포레스트는 전체 특성의 제곱근 (Square Root) 수 만큼 특성을 무작위로 골라 계산한다.
  • 각 분기는 의사결정나무와 같이 분류의 경우는 '지니계수' 혹은 '엔트로피'가 가장 낮아지는 방향으로, 회귀의 경우 MSE가 가장 낮아지는 최적의 분기점을 찾아 분기해 나가게 된다. 
    • 즉, 정답이 범주형 변수인 경우: 엔트로피 지수 또는 지니 지수
    • 정답이 연속형 변수인 경우: MSE를 이용한 분산량 감소 
  • 부트스트랩을 통해 만들어놓은 여러가지 나무들을 합치는 과정(Aggregating)에서,
    • 회귀 문제의 경우 기본모델들의 결과들을 '평균' 내고
    • 분류 문제의 경우 '다수결'로 투표를 해서 가장 많은 투표를 받은 것을 결과로 낸다. 

 

[참고] 의사 결정 나무에서의 지니지수와 엔트로피 지수 

  • 의사결정나무: 의사 결정 규칙과 그 결과물들을 트리 구조로 도식화한 것 (분류 및 예측 모델 중 하나)
  • CART(Classification And Regression Tree) 알고리즘
    • 각 분할에서 정보 이득을 최대화하는 것이 목적인 분류와 회귀 문제 모두를 해결할 수 있는 유연한 알고리즘
    • 정보 이득을 최대화하는 것은 분기 전후의 불순도 차이(impurity decrease)를 최대화하는 것을 의미
    • 불순도란, 분류하려는 데이터 집합에서 서로 다른 클래스(범주)가 섞여 있는 정도를 나타내는 지표로 CART 알고리즘에서 지니 계수(Gini index)를 사용한다.
      • Gini index는 0에서 1사이의 값을 가지며, 0이면 해당 데이터 집합에서 모든 데이터가 동일한 클래스로 구성되어 있음을 나타내고, 1이면 모든 데이터가 서로 다른 클래스로 구성되어 있음을 나타낸다.

엔트로피 (Entropy)

  • 정보 이론에서, 정보의 불확실함의 정도를 나타내는 양으로, 데이터를 잘 구분할 수 없을수록 엔트로피는 커진다.
  • 엔트로피가 낮을수록 해당 정보는 명확하고 예측 가능하다고 판단 가능하다. (0~1사이 중 0에 가까울수록 범주가 균등하며, 1에 가까울수록 분류가 불균형하다) 
  • 정보 이득의 최대화 -> 불순도의 감소 -> 엔트로피의 감소 

 

지니 지수

  • 불평등의 정도를 나타내는 통계학적 지수로, 데이터가 비슷하게 있을수록 지니 지수는 높아짐
  • 정보 이득의 최대화 -> 불순도의 감소 -> 지니 지수 감소
  • 엔트로피와는 다르게, 데이터가 어떻게 분포되어 있는지에 대한 정보도 포함하고 있으므로 엔트로피보다 더 강력한 특성을 가진다. 

 

 

https://ko.wikipedia.org/wiki/%EB%9E%9C%EB%8D%A4_%ED%8F%AC%EB%A0%88%EC%8A%A4%ED%8A%B8

 

랜덤 포레스트 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 기계 학습에서의 랜덤 포레스트(영어: random forest)는 분류, 회귀 분석 등에 사용되는 앙상블 학습 방법의 일종으로, 훈련 과정에서 구성한 다수의 결정 트리로부

ko.wikipedia.org

 

https://mozenworld.tistory.com/entry/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EB%AA%A8%EB%8D%B8-%EC%86%8C%EA%B0%9C-4-%EB%9E%9C%EB%8D%A4-%ED%8F%AC%EB%A0%88%EC%8A%A4%ED%8A%B8-Random-Forest

 

머신러닝 모델 소개 (4) - 랜덤 포레스트 (Random Forest)

머신러닝 모델 소개 시리즈의 네 번째 글입니다. 랜덤 포레스트(Random Forest)는 앙상블(Ensemble) 학습 방법 중 하나로, 여러 개의 결정 트리(Decision Tree)를 조합하여 더 강력한 분류 모델을 구축하는

mozenworld.tistory.com

 

https://blog-ko.superb-ai.com/3-minute-algorithm-random-forest/

 

[3분 알고리즘] 랜덤 포레스트

지난 글에서 머신러닝 알고리즘 가운데 가장 이해하기 쉽고 의사결정과정이 명확한 의사결정나무 알고리즘에 대해 알아보았다. 다만 의사결정나무는 분기를 어디까지 할 지 파라미터들을 설정

blog-ko.superb-ai.com

 

https://aytekin.tistory.com/47

 

랜덤포레스트 모델(Random Forest Model)

이번 블로그에서는 결정트리모델의 단점인 과적합문제를 보완하고 머신러닝에서 분류문제를 풀때 가장 많이 사용되는 랜덤포레스트모델(Random Forest Model)에 대해서 알아보도록 하겠습니다~! <

aytekin.tistory.com

 

https://velog.io/@zlddp723/%EC%9D%98%EC%82%AC%EA%B2%B0%EC%A0%95%EB%82%98%EB%AC%B4Decision-Tree-%EC%A0%95%EC%9D%98

 

의사결정나무(Decision Tree) 정의

의사결정나무(Decision Tree) 정의 : 의사 결정 규칙과 그 결과물들을 트리 구조로 도식화한 것즉, 의사결정나무(Decision Tree)는 데이터 분석과 머신 러닝에서 많이 사용되는 분류 및 예측 모델 중 하

velog.io