랜덤포레스트는 Meta-Learning의 한 종류로 여러 모형을 통합하여 모델을 만드는 것을 뜻한다. 

이는 이전 디시전트리를 구현하는 과정에서 설명하였던 앙상블 기법으로 불리기도 한다. 


디시전트리(의사결정나무) 설명은 이전 포스팅으로.


랜덤포래스트

의사결정나무를 여러 개 모아놓으면 (decision tree 여러 개) 숲이 되는데 이 숲을 구성하는 방법을 random 으로 함

나무마다 독립변수가 다르게 들어갈 수 있도록 그 수를(독립변수 사용 개수)를 제한시키는 것

이때 베깅 기법을 사용함.

Random subset of training data(bagging) + Random selection of features 


베깅(Bagging)

베깅은 원 표본에서 중복을 허용하여 표본을 추출(복원추출).

(학습)데이터셋을 여러 개 만들수 있는데 데이터가 각 셋마다 다르다


베깅과 랜덤포레스트의 정의는 위와 같이 내릴 수 있다. 이해가 안가면 제일 위 사진과 함께 아래 예시를 보자.


베깅의 예시는 

총 1000개의 train 데이터 셋이 있다고 가정하자. 이럴 때, train셋을 1000개를 전부 다 한번에 쓰는 것이 아닌,

이 중 700개만 뽑아서 train셋을 여러개 만든 후, 이를 각각 학습한 결과값의 평균, 즉 값들을 모두 이용하여 

최적회된 모델을 만드는 것이다.


이 때 한번 학습에 사용한 데이터는 다시 train데이터에 놓고 랜덤으로 추출하여 각 train 데이터 셋마다 일부는 겹칠 수 있지만 완벽히는 겹치지 않는

모델을 만드는 것이다 


랜덤포레스트의 예시는

마찬가지로 train data set마다 각기 백퍼센트 동일하지 않은(=다른) 셋을 가지고 있다는 것은 동일하지만, 베깅처럼 모든 변수를 사용하는 대신

나무마다 독립변수가 다르게 들어가도록 독립변수의 수를 제한하는 기법을 뜻한다.

즉 a데이터 셋은 나이, 성별, 수입 변수를 사용하고, b데이터셋은 나이, 거주지, 수입 변수를 사용하는 식으로 백퍼센트 변수가 동일하지 않는 것이다.


이와 비슷한 이론으로 부스팅이 있는데, 부스팅은 베강과는 살짝 다른 기법이다.

부스팅을 활용한 디시전트리의 정의는 아래와 같다.


부스팅 (Adaboost)

Train data 중 일부를 랜덤으로 추출하여 모델을 만든다. 이 모델의 정확도를 측정한다.

여기서 에러가 난 데이터들을 찾고, 이 데이터들에게 가중치를 더 준 상태에서 다음번 모델을 만들 데이터들을 랜덤으로 추출한다.

이 과정에서 가중치가 큰 데이터(기존에 에러 났던 데이터)가 들어올 확률이 높다.

이렇게 다시 모델을 만들고, 전체 Train data셋을 통해 다시 정확도를 측정한다. (=Sequential 하게 모델을 만들어간다) 


해당 과정을 반복하여 완벽한 모델을 만들도록 하는게 부스팅.


이러한 랜덤포레스트의 장단점은 

장점

의사결정나무(디시전 트리)보다 정확도가 높아진다

단점

디시전 트리가 가지는 설명력을 상실한다(왜 대출 심사에서 떨어진건지, 왜 부도가 난건지 등 변수의 가중치를 우선순위를 파악할수 없으니 결과를 해석할 수 없음)


+ Recent posts