Decision tree는 feature를 기반으로 데이터를 나누어가며 leaf node서 데이터의 class label을 결정하는 top-down 방식의 모델이다.
Algorithm
Basic idea: greedy & recursive & divide and conquer
종료 조건:
데이터가 같은 class label 밖에 남지 않았을 때.
더이상 partition할 수 있는 feature가 없을 때.
Root node만 있는 빈 트리에서 시작한다.
선택한 feature에 따라 데이터를 나눈다. (partitioning) 각각의 나뉜 데이터에 대해: 3. 종료 조건이 만족되면 예측을 진행한다. 4. 그렇지 않다면 2번으로 돌아가 partitioning을 반복한다.
Decision tree algorithm
Decision Tree Induction
그렇다면 어떤 기준으로 feature를 선택하여 분류할지에 대한 내용.
알고리즘
ID3: Entropy
C4.5: Gain Ratio
Common idea: 가급적이면 하나로 묶일 수 있는 feature를 선택하자..! (more homogeneous, less heterogeneous)
예를 들어, class A, B가 있다고 가정하자. 이를 '성인'이라는 feature에 따라 분류했더니 Yes - A:4, B:2, No - A:2, B:4로 분류되었다. 별개로 '성별'이라는 feature에 따라 분류했더니 남 - A:6, 여 - B:6으로 분류되었다. 이 경우, '성별'이라는 feature가 '성인'이라는 feature에 비해 더 homogeneous 하다는 것을 알 수 있다.
Decision tree induction
ID3: Iterative Dichotomiser 3
Information Gain이라는 값을 바탕으로 엔트로피를 계산한다. A라는 feature로 partitioning 하였을 때, 전후 엔트로피의 차이를 확인한다. 엔트로피가 가장 적은 feature selection. (*엔트로피: 불확실성의 척도, 높을수록 데이터가 여러 데이터가 섞여있다는 의미. 낮을수록 단일 데이터가 많다는 의미.)
아래 수식을 통해 feature에 대한 Gain을 산출하여 가장 높은 값을 가진 feature를 선택한다. p_i는 class i에 속하는 data D의 확률을 나타낸다. 예를 들어, 전체 데이터의 수가 10개일 때, class A 6개, B 4개가 있다면 p_red는 6/10이며 p_blue는 4/10이다.
계산 예시는 귀찮으니 패스...
How to calculate Information GainInfo(D) graph
C4.5: Evolution of ID3
ID3는 큰 수를 따라 값이 편향되는 경우가 발생한다. 예를 들어, class A의 수가 120개이고, class B의 수가 12개라면 Gain의 값이 A에 대해 편향될 수 있다. 이를 방지하기 위해 비율을 고려한 Gain Ratio를 사용한다. 즉, information gain을 표준화하였다고 볼 수 있다.
SplitInfo는 페널티라고 보면 된다. Feature에 의해 얼마나 많은 partition이 생겼는지 확인하며 partition이 많을수록 큰 값을 가진다. 이는 결과적으로 Gain Ratio의 감소로 이어진다.
How to calculate Gain Ratio
Overfitting
Training set의 에러를 낮추기 위해 대해 너무 큰 depth, condition을 사용한다면 overfitting되어 실제 testing set의 에러는 더욱 심해질 수 있다.
Overfitting을 방지하기 위해 tree pruning이라는 기법을 사용한다.
Tree Pruning
Decision tree를 가지치기하여 overfitting을 방지하는 기법이다.
두 가지 접근법이 있다.
Pre-pruning
Post-pruning
Pre-pruning: Halt tree construction early
Decision tree를 만드는 도중에 node의 split을 멈추는 방법이다.
적절한 threshold를 고르기가 어려움. : Minimum samples split, Maximum tree depth, Minimum gain
Post-pruning: Remove branches from a "fully grown" tree
Pre-pruning보다 더 많이 쓰는 방법
Decision tree가 완성된 상태에서 node를 날리는 방법이다.
Validation set을 사용하여 "best pruned tree"를 찾는 것이 목적이다.
Original tree, pruned tree를 비교하여 정확도가 높은 쪽의 tree를 선택하여 original tree로 변경하며 모든 pruning 작업이 정확도가 낮아지는 경우 pruning을 종료한다.