티스토리 뷰

decision tree, algorithm, 의사결정트리

의사결정 트리 개념

의사결정 트리(decision tree)는 분류 작업과 회귀 작업 모두에 사용되는 인기 있는 머신 러닝 알고리즘으로, 내부 노드는 특징 또는 속성을 나타내고, 분기 노드는 의사결정 규칙을 나타내며, 각 리프 노드는 결과 또는 결과를 나타내는 트리 성격을 띠는 모델입니다. 의사결정 트리의 작동 방식은 다음과 같습니다. 먼저 최상단에 Root Node가 있습니다. 이것은 전체 데이터셋을 나타내는 최상위 노드로, 2개 이상의 동질적인 집합으로 나뉩니다. 그 밑에는 의사결정 노드(내부 노드)가 있습니다. 이 노드들은 데이터셋을 특정한 특징이나 속성에 따라 하위 집합으로 나눕니다. 이때 분기를 통해 노드를 나뉘는데, 분기는 각 내부 노드에서 데이터가 분할되는 결정 규칙 또는 조건을 나타냅니다. 마지막으로 리프 노드(Leaf Node)라는 개념이 있습니다. 이 노드들은 최종 결과 또는 결정을 나타냅니다. 이 노드들은 더 이상 분할되지 않고 예측된 출력을 포함합니다. 의사결정 과정은 루트 노드에서 시작하여 리프 노드에 도달할 때까지 결정 규칙에 따라 트리 아래로 이동하여 최종 결정 또는 예측이 수행됩니다. 의사 결정 트리는 이해하고 해석하기 쉽기 때문에 인기가 있습니다. 인간의 의사 결정 과정을 모방하고 그래픽으로 시각화할 수 있습니다. 그러나 모델이 학습 데이터를 너무 가깝게 맞추고 보이지 않는 새로운 데이터에서 성능이 떨어지는 과적합이 발생하기 쉽습니다. 리프 노드에서 가지치기 및 최소 샘플 요구 사항 설정과 같은 기술이 이 문제를 해결하는 데 종종 사용됩니다.

 

알고리즘 적용 분야

의사결정 트리는 분류 작업과 회귀 작업 등 다양한 문제에 적용할 수 있습니다. 예를 들어, 고객 이탈 예측입니다. 회사에서 어떤 고객이 이탈할 가능성이 있는지 예측하려고 합니다. 이때 사용할 수 있는 특징 피처는 고객의 방문 이력, 구매 패턴, 고객의 프로파일 등이 있습니다. 결과를 이탈이 된다(0) 또는 이탈이 되지 않는다(1)를 기준으로 의사결정 트리를 적용해 볼 수 있을 것입니다. 두 번째 예입니다. 은행에서 대출 승인 프로세스를 자동화하기 위해 사용할 수 있습니다. 고객의 소득이나 신용점수, 취업 여부, 대기업 여부, 소득대비 부채 비율 등을 특징 피쳐로 할 수 있을 것입니다. 그 결과 대출을 승인한다, 하지 않는다로 결과를 분석할 수 있을 것입니다. 또 다른 예시로 신용카드 부정거래 여부를 확인할 수 있습니다. 거래금액, 이전 거래내역, 위치, 시간 등의 특징을 가지고 부정거래 여부를 1 또는 0으로 판별할 수 있습니다. 그 외에도 온라인 쇼핑몰에서 방문 고객에게 제품을 추천할 때 사용할 수 있으며, 어떤 직원이 회사를 떠날지를 예측할 수 있습니다.

 

적용 시 주의할 점

의사결정 트리를 사용할 때 몇 가지 고려 사항이 있습니다. 첫째, 과적합입니다. 의사결정 트리 결과가 깊이가 깊고 너무 복잡하게 적용될 경우 과적합되기 쉽습니다. 과적합은 훈련 데이터의 노이즈에 과하게 알고리즘이 적용되어 때 보이지 않는 새로운 데이터에 대한 일반화가 잘 이루어지지 않은 것입니다. 이럴 때는 가지치기(pruning)와 같은 방법을 사용하거나 리프 노드에서 필요한 최소 샘플 수를 설정하여 트리가 지나치게 복잡해지는 것을 방지해야 합니다. 둘째로 데이터의 품질입니다. 의사결정 나무는 노이즈가 있는 데이터나 특이치에 민감합니다. 알고리즘을 적용하기 전에 결측치, 특이치 제거 등 데이터를 사전에 처리가 필요합니다. 의사결정 나무는 일반적으로 해석하기 쉽지만, 너무 깊은 경우는 복잡해지고 이해하기 어려울 수 있습니다. 그렇기 때문에 트리 구조를 단순화하여 해석 가능성을 높여주어야 합니다. 또한 학습 데이터가 조금만 변경되어도 트리 구조가 완전히 달라질 수 있기 때문에 random forest와 같은 앙상블 기법을 함께 고려하는 것이 견고함을 높이는 방법일 것입니다. 마지막으로 알고리즘이 범주형 기능을 잘 처리하지 못할 수 있습니다. 범주형 변수를 적절히 수치형 변수로 바꾸는 작업이 필요합니다.