[AIB]Note222 Random Forests

노코멘트·2022년 3월 3일
0

AIB 학습

목록 보기
12/15
post-thumbnail

1. Random Forests

1.1 Random Forests란 뭔가?

앙상블 모델의 한 종류로 기본 모델로 Decision Tree를 사용한다.
데이터가 선형/비선형, 회귀/분류에 상관없이 사용할 수 있다. (회귀-평균/분류-최빈값)
robust한 정확성, 적은 훈련 시간, 해석의 용이성 등으로 가장 강력한 머신러닝 알고리즘 중의 하나다.
기존의 결정트리 모델은 나무가 하나였지만, 그 나무를 무작위로 여러개 묶어서 사용한다.(아무래도 Tree의 집합이 Forest라서 그런듯... 무릎을 탁 치는 네이밍센스.. ^^bb)

* 앙상블 모델: 하나의 데이터로 여러 종류의 머신러닝 모델(Weak Base Learner, 기본모델)을 만들어 학습하는 방법. 여기에서 사용되는 Bagging 말고도 Stacking, Boosting 등이 있다.

** 기본모델(Weak base model)과 기준모델(Baseline model)
기본모델은 앙상블 모델처럼 여러 모델을 하나로 합쳐서 새로운 모델을 만들 때 기본 재료가 되는 모델. 여기서는 Decision tree를 사용해서 Random Forest를 만들었다. 반면, 기준모델은 그 의미가 전혀 다르다. 예측 모델의 성능을 측정하는 가장 단순하고 직관적이고, 최소한의 성능을 나타내는 기준이 되는 모델이다. 회귀에서는 타겟의 평균값, 분류에서는 타겟의 최빈값처럼 말이다.

1.2 Decision Tree와의 차이

  • 결정트리 모델은 하나의 트리만 사용하기 때문에 하나의 노드에서 오류나 에러 등이 생기면, 그 에러가 밑에 있는 하부 노드에도 여전히 영향을 끼치게 된다. 또 새로운 샘플을 분석하기에 쉽지 않다. 특성이 n개가 있는 데이터를 학습할 때에, n개를 학습을 한다.
  • 랜덤포레스트 모델은 분석하는 Data set도 랜덤, 각 노드도 Random하게 추출 및 사용하기 때문에 결정트리 모델처럼 오류의 영향이 줄어든다. 즉, 정확도를 높일 수 있다. 또한 새로운 샘플도 쉽게 분석할 수 있다. 새로운 샘플이 들어오게 되면, 만들어 놓았던 랜덤포레스트 모델에 집어 넣어 결과를 확인해볼 수 있다. 특성이 n개가 있으면 n개 중에서 k개를 골라서 학습을 한다. (k=log2n, 밑이 2인 로그)

1.3 Bootstrap

1.3.1 Bootstrap.

통게학에서는 Random하게, 무작위로 샘플을 재표집하는 것을 의미한다. 추출하는 방법은 복원 추출! 샘플을 뽑더라도 다시 그 샘플을 집어놓고 새로 뽑는 것을 뜻한다.

1.3.2 Bagging

Bagging은 Bootstrap AGGregatING의 줄임말로 분류/회귀 분석에서 사용되는 머신러닝 모델의 알고리즘 중 하나다. 랜덤포레스트 모델에 비추어 보면 Bootstrap data를 사용하고, 데이터를 분석하기 위해 결정나무 모델을 사용하는 것으로 이해할 수 있겠다. Bagging은 모델을 훈련시킬 때 분산을 줄이게 된다.

1.3.3 Out-Of-Bag sample(OOB sample)

Bootstrapped data set을 만들 때에 새로운 데이터 셋에 포함되지 않은 데이터들을 의미한다.
예) x1~x10까지 있을 때, 랜덤하게 복원 추출 10회를 했을때 [x1, x3, x2, x1, x7, x8, x10, x3, x2, x10] 가 Bootstrapped data set에 들어가서 모델을 훈련시키게 되고, 포함되지 않은 x4, x5, x6, x9가 OOB sample이 된다.
이 샘플들로 훈련된 모델을 검증(Validation)하거나 테스트를 진행한다. 이렇게 oob sample로 검증을 할 때 나오는 오류 값이 'out-of-bag error'로 모델의 성능을 평가하는 지표가 된다.
보통 Original data set의 약 1/3(36.8%)정도가 OBB sample이 된다고 한다. (수식으로 증명되어 있음)

1.3.4 전체 흐름

Step1. Bootstrapped data set을 만든다. (데이터의 무작위 추출)
Step2. Step1에서 만들었던 Bootstrapped data set을 활용해 결정나무 모델을 만든다. 하지만 노드에 사용하는 변수(피쳐, 특징, 컬럼 등)는 모두 랜덤하게 사용한다. (변수의 무작위 추출) 그렇게 만들어진 결정나무 모델의 합이 바로 '랜덤포레스트 모델'이 된다.
Step3. OOB sample을 활용하여 만들어진 랜덤포레스트 모델을 검증(Validation) 혹은 Testing할 수 있다. 이미 답을 알고있는 훈련 모델에는 적용하지 않고(당연히!!), OBB sample이 훈련에 사용하지 않은 결정나무 모델에 사용된다.

1.4 Ordinal encoding

OHE(One_Hot_Encoder)와의 차이점은?

  • OHE: Category의 수에 따라 새로운 특성을 생성한다. 그렇기에 카테고리의 수가 적고, 수의 우열을 나눌 수 없는(예, 남녀(0/1), 혈액형(0/1/2/3) 등) 명목형 변수에 적합하다.
  • Ordinal: 열 개수는 그대로 이지만, 카테고리 별로 중요도가 설정됨. (예, 한우라고 다 똑같은 한우가 아니고~~ 1++/1+/1/2/3처럼 우열이 매겨지는 것)

트리기반 모델에서는 그럼 어떻게 해야 하나요???: 트리모델은 특성 중요도를 위해 컬럼을 분할하지 않는 것이 좋다. 그렇기 때문에 Ordinal이 더 좋다고 할 수 있다.
다른 말로 다시 이야기를 하자면, 트리구조에서는 중요한 특성일수록 상위 노드에서 사용(분할)이 된다. 그래서 Cardinality를 많이 만들어버리는 OHE는 똑같이 중요한 특성을 쪼개버리기 때문에 (마치 춘추전국시대....) 모델의 퍼포먼스가 떨어질 수 있다.

profile
안녕하세요.

0개의 댓글