Decision tree 기초개념

2019-05-02

.

그림, 실습코드 등 학습자료 출처 : https://datascienceschool.net

1. 의사결정나무 개요

1

  • 딥러닝이 나오기전까지는 가장 많이 쓰이던 머신러닝 기법이다. 사실 의사결정나무 단독보다는 랜덤포래스트라는 앙상블모델 형태로 가장 많이 쓰인다.

  • 확률론적 판별모형이지만 로지스틱 회귀분석처럼 무슨 수식이 있어서 거기에서 모수 몇개를 결정하는 것이 아니라 넌파라미터릭한 모델이다. 모양이 어떻더라도 다 서술 할 수 있다.

  • 그래서 판별적 확률모형이기는 하지만 바이너리 뿐만 아니라 멀티클래스도 적용이 가능하다. classification뿐만 아니라 regression에도 적용이 가능하다.

  • y를 분류하기 위해 x1, x2, x3 등등 이 있다면 예를들어서 x2 딱 하나만 골라서 이 x2에서 어떤값 다시말해 쓰레시홀드를 하나 정한다. 그래서 전체 데이터를 이 쓰레시 홀드를 기준으로 두 그룹으로 나눈다.

  • 이 두개의 소그룹으로 나누면 위 단계를 부모노드라고하고 이 밑에 소그룹을 자식노드라고 한다. 자식노드는 부모노드보다는 데이터의 갯수가 적어진다.

  • 이렇게 데이터를 나누는 이유는 결국 classification을 하기 위함인데 자식노드에서 하나의 특정한 클래스의 데이터만 들어가게 되면 완벽하게 분류가 되는 최상의 조건이 된다.

  • 위의 단계를 반복적으로 하다보면 tree처럼 구조가 짜여지게된다.

2. 의사결정나무의 분류규칙

2

3

  • 그렇다면 우리가 x2는 어떻게 결정하고 거기서 쓰레시홀드값은 어떻게 결정하는 것인가. 조건부 엔트로피를 이용하면 된다.

  • 통상 인포메이션 게인이 큰 룰을 선택한다. 인포메이션 게인은 자식노드의 조건부 엔트로가 부모노드의 엔트로피보다 얼마나 낮아졌는가를 말한다. 인포메이션 게인은 X라는 조건에 의해 확률 변수 Y의 엔트로피가 얼마나 감소하였는가를 나타내는 값이다. 다음처럼 Y의 엔트로피에서 X에 대한 Y의 조건부 엔트로피를 뺀 값으로 정의된다. 수식으로는 다음과 같이 계산할 수 있다. IG[Y,X] = H[Y] - H[Y/X]

  • 두개의 룰이 있다면 우리는 인포메이션 게인이 큰 룰을 선택하는 것은 알겠는데 그렇다면 이걸 가지고 피쳐랑 쓰레시홀드는 어떻게 결정하는가.

  • 결론적으로는 전부 다 해보면 된다. x1을 선택해서 쓰레시홀드를 임의로 선택해서 그리고 통상 쓰레시홀드는 통상 가운데에 놓고 하는데 결국에는 다 해보고 인포메이션 게인이 가장 큰 값을 잡는다. 그 다음에 x2를 선택해서 다시 방금과 같은 방법으로 또 해보고, x3, x4.. 전부 다 해본다. 현실적으로 무식하게 전부 다하지는 않고 일부만 샘플링해서 보통은 한다.

  • 이런식으로 하면 의사결정나무를 구성할 수 있고, 이렇게하면 장점이 한번에 피쳐를 하나만 고르기 때문에 그리고 피쳐가 분류되는 기준이 값이 어떤값보다 크냐 작냐기 때문에 머신러닝 한 결과를 사람이 쉽게 이해할 수 있다. 그리고 이런 결과를 visualization해주는 함수가 있다. graphviz 프로그램을 이용하면 되는데 dot프로그래밍으로 만들어졌고 이걸 파이썬으로 활용할 수 있는 툴이 pydot이다.

  • 의사결정나무는 회귀분석까지 할 수 있다. 예를 들어서 1차원 데이터라고 치면 쓰레시홀드를 하나 선택하고, 그 다음에 만약에 이것을 고정된 값으로 모델링하면 높이를 뭘로 잡았을때 기존에 있는 데이터와 오차가 가장 적을것인가라는 것을 생각해서 각 region의 높이를 실수 값으로 정하게 된다.

  • 특정 region의 y값을 fixed된 데이터로 나타내게 된다. 그 다음 단계에서는 다른 region에서 쓰레시홀드를 기준으로 또 나누게 된다.

  • 가능한한 원래있던 데이터와 비슷해지도록 adaptive하게 나누어준다. 그러면 최종적으로 만들어진것은 계단식 모양으로 원래 데이터 분포와 모양이 유사하게 될것이다.

  • depth를 높이면 train 데이터에 대해서 더 정확하게 모델링을 하게 된다.

3. greedy 한 의사결정

4

4. Regression tree

예측값 y헷을 다음처럼 각 특징값 영역마다 고정된 값을 사용하고,

\[\ \hat{y} = \begin{cases} y_1 & \text{ if } x \geq x_{\text{threshold}} \\ y_2 & \text{ if } x < x_{\text{threshold}} \end{cases}\]

특징을 구분하는 기준값으로 조건부 엔트로피의 감소량인 Information gain이 아닌 잔차제곱합을 사용하면 회귀분석에서 의사 결정 나무를 쓸 수 있다. 이러한 모형을 regression tree라고 한다.