본문 바로가기

소프트웨어/패턴인식

의사결정트리 / 랜덤 포레스트 / 부스팅 / 배깅 (Decision Tree / Forest) part.1

오늘은 간단히 의사결정트리(DecisionTree) / 랜덤 포레스트(RandomForest)에 대해서 정리해보려고 한다.

 

1. Supervised(지도학습) VS Unsupervised(비지도학습)

랜덤트리/포레스트는 지도학습이다. 바로 정답을 알려주고 Training을 진행 후 Train된 모델을 이용하여 입력값에 대하여 출력값을 알아 맞추는 방법이다. 지도학습과 비지도학습에 따라서 다양한 알고리즘들이 존재 하며 지도학습은 Parametric과 Non parametric으로 구별할 수 있다.

 

 

2.  Bootstrap (sample re-sampling)

랜덤트리/포레스트를 만들기 위해서는 많은 데이터에서 모델을 Training할 샘플을 뽑아야 한다. 부트스트랩은 샘플을 뽑는 방법 중 하나다. 간단히 생각해보면 모집단을 대체할 수 있게끔 샘플을 뽑으려면 어떻게야 할까? 바로 랜덤하게 뽑지만 그 횟수를 늘려주면 된다.

 

예를 들면 간단하게 1000개의 데이터가 있는데 내가 30개를(중복허용) 뽑아서 1000개 데이터의 평균과 비교한다면 차이가 많이 날 것이다. 하지만 30개씩 여러번을 뽑아서 평균을 구한다면 어떨까? 아마 1000개의 데이터와 유사한 평균을 구할 수 있을 것이다. 이것은 매우 중요한 컨셉이다. 왜냐면 즉 30개씩을 뽑은 데이터를 이용하여 모델을 만들고 이렇게 만든 여러개의 모델을 합치면 정확도가 높은 모델을 만들 수 있을 것 같지 않은가?

 

 

3. DecisionTree

랜덤 트리를 이용하려면 의사결정 트리에 대한 이해가 필요하다.

위에서 말한 것처럼 부트스트랩으로 뽑은 샘플을 이용해서 우선은 랜덤트리를 구성해야 하기 때문이다. 그럼 의사결정 트리는 어떻게 만들어야 하는것인가?

 

위와 같은 문제를 풀어야 한다면?(8개의 샘플 / a,b,c 판단조건 / +- class를 구별하는 문제)

'A'라는 표시한 노드에 a,b,c중 어떤 것을 우선으로 해야지 +/-를 정확히 구별할 수 있을까?

이미 정답을 적어 놓았다 c가 0이면 무조건 - 이다. c가 1이고 a가 1이면 + 이다. 이런식으로 해석은 되고 우리가 하려는것은 자동으로 a,b,c를 선택하는 것이다.

 

좀 더 간단히 이야기 하면

위 그림에서 A1과 A2중 어떤 것이 더 좋은 판단 조건일까?

29개의 + / 35개의 - 를 구별하는데 A1으로 구별하면 +의 경우 21개/8개로 구별, -의 경우 5개/30개

A2로 구별하면 +의 경우 18개/11개로 구별, -의 경우 33개/2개 이다

+만 보면 A1이 좋은것 같고 -구별은 A2가 좋은 것 같다. 이렇게 구별이 어려울때 바로 지니(Gini)/엔트로피(Entropy) 지수를 사용하는 것이다.

 

엔트로피의 경우 계산 값이 낮은것이 구별이 더 잘되는 것이고 지니계수의 경우는 높은 것을 선정하면 된다.

 

엔트로피 및 지니 계수 계산을 통한 구별법은 다음시간을 통해 알아보도록 하자.

 

2018/02/25 - [딥러닝,패턴인식/패턴인식] - 의사결정트리 / 랜덤 포레스트 / 부스팅 / 배깅 (Decision Tree / Forest) part.2