결정트리(Dicision Tree)
이진 분류에서 위의 상황과 같이 결정 경계가 하나의 직선으로 만들어질 수 있는 경우에는 앞서 배웠던 Logistic regression을 사용하면 된다.
하지만 위의 상황과 같이 결정 경계가 하나의 직선으로 만들어질 수 없는 경우에는 (위의 상황은 두 개) 결정트리(Dicision Tree)를 사용해서 분류할 수 있다.
첫번째로 x1이 δ1보다 큰지 작은지로 결정경계를 만든다, 그리고 두번째로 x2가 δ2보다 큰지 작은지로 두번째 경계를 만들어 모델을 만들 수 있다.
이러한 과정을 트리로 만들 수 있다.
이러한 과정을 통해 모델을 학습시키고 예측할 수 있음으로 이것을 결정트리(Dicision Tree)라고 부른다.
### Classification Tree###
결정트리를 만들기 위해서 알아야할 것은 각각 분기점마다 있는 질문이다.
분기점마다 있는 splitting 기준을 구해서 트리를 완성할 수 있다.
이 기준은 트리의 Leaf에서 output이 가장 순수(Pure)할 수 있도록 기준을 잡는다.
output이 순수하다는 것은 다음과 같다.
Leaf에서 데이터가 10개가 있을 때 양성 label로 예측을 5개하고 음성 label로 예측을 5개했다면 확률이 1/2 즉 가장 impure하다고 할 수 있다.
반대로 양성 label 10개, 음성 label로 0개로 예측했다면 다른 것과 섞여있지 않은, 가장 pure하다고 할 수 있다.
이렇게 데이터 셋을 leaf에서 가장 순수하게 만드는 방향으로 splitting 기준을 잡는다.
pure한 정도를 나타내기 위해서 Gini impurity를 알아야한다.
Gini impurity는 위와 같이 계산하는데, 이진분류의 상황에서는 아래의 식처럼 표현 가능하다.
전체 트리의 Gini impurity를 구하는 식은 다음과 같다.
ex)
이진 분류일 때 이렇게 두 개의 상황이 있다고 가정하자,
왼쪽 상황의 G(S)를 계산하면 16/48이 나오고 오른쪽 상황의 G(S)를 계산하면 18/48이 나온다.
G(S)가 오른쪽 상황이 더 높음으로 오른쪽 상황이 더 불순한 것이다.
즉 model이 앞으로 진행해야할 방향은 왼쪽 방향이다.
### Regression Tree ###
분류(classification)에서는 output이 0,1(이진분류)로 분리(discrete)되어 있기 때문에 Gini impurity를 사용할 수 있었다. 하지만 회귀(regression)에서는 output이 연속적인 실수 값이기 때문에 위에서 언급한 방법을 사용하지 못하고 Least square 방법을 사용한다.
타겟이 얼마나 평균에 떨어져있는지를 구해서 그것을 최소화하는 방향으로 splitting 기준을 잡는다.
splitting 기준을 찾은 후,
L(S)를 이용해서 모델 예측을 하는 과정을 그림으로 설명하면.
우리는 최대한 True에 가까운 예측을 하고 싶다.
첫번째로 빨간색으로 표시된 splitting 기준 좌,우로 평균을 구한다.(빨간색 실선)
두번째로 초록색으로 표시된 splitting 기준 좌,우로 평균을 구한다.(초록색 실선)
이러한 과정을 반복하다보면 아래와 같은 그래프를 얻을 수 있다.
이 모델에 next input을 넣음으로써 예측을 할 수 있는 것이다.