조건부 추론 나무
조건부 추론 나무Conditional Inference Tree[8]는 CART(rpart가 구현한 의사 결정 나무 알고리즘) 같은 의사 결정 나무의 두 가지 문제를 해결한다. 첫째는 통계적 유의성에 대한 판단 없이 노드를 분할하는 데 따른 과적합Overfitting이다. 둘째는 다양한 값으로 분할 가능한 변수가 다른 변수에 비해 선호되는 문제다.
조건부 추론 나무는 조건부 분포Conditional Distribution에 따라 변수와 반응값(분류) 사이의 연관 관계를 측정하여 노드 분할에 사용할 변수를 선택한다. 또, 의사 결정 나무에서 노드를 반복하여 분할하면서 발생하는 문제인 다중 가설 검정Multiple Testing1 을 고려한 절차를 적용하여 적절한 시점에 노드의 분할을 중단한다.
따라서 rpart가 과적합 등의 이유로 성능이 잘 나오지 않는 경우 조건부 추론 나무를 사용해 효과를 볼 수 있다. 또, 조건부 추론 나무는 rpart보다 훨씬 이해하기 쉬운 그래프 기능을 제공하는 장점이 있다.
party::ctree( ) 함수가 조건부 추론 나무 기능을 제공한다.
party::ctree : 조건부 추론 나무 모델을 생성한다. |
party::ctree( formula, # 모델 포뮬러 data # 포뮬러를 적용할 데이터 ) 반환 값은 BinaryTree 객체다. |
party::predict.BinaryTree : ctree를 사용한 예측을 수행한다. |
party::predict.BinaryTree( obj, # BinaryTree 객체 newdata, # 예측을 수행할 데이터 # 예측 결과의 유형 # - response: 분류 # - node: 잎사귀 노드의 ID # - prob: 각 분류에 대한 확률 type=c("response", "node", "prob") ) 반환 값은 예측 결과다. |
1 다중 비교 문제(Multiple Testing Problem)는 통계적 추론을 동시에 여러 대상에 적용할 때 신뢰 구간이 참 값을 포함하지 않게 되거나 귀무가설을 잘못 기각하는 가능성이 높아지는 현상을 말한다. 예를 들어, 노드의 분할 여부를 판단하기 위해 95%의 신뢰도를 가진 가설 검정을 수행한다고 하자. 이 검정으로 노드를 3번 분할할 때 신뢰도는 95%×95%×95%=85.7%다. 따라서 다중 비교 시 적절한 보정을 하지 않으면 신뢰도가 낮아지면서 신뢰 구간과 가설 검정이 제대로 이루어지지 않는다.