머신러닝 의사결정 트리의 개념
의사결정 트리란?
의사결정 트리(decision tree)는 데이터 분류 및 회귀에 사용되는 지도 학습 알고리즘입니다. 이번 장에서는 의사결정 트리를 이용한 데이터 분류에 대해 알아보겠습니다. 의사결정 트리의 가장 큰 장점은 다른 알고리즘에 비해 결과값이 왜, 어떻게 나왔는지 이해하 기가 상당히 쉽다는 것입니다. 또한 높은 정확도 역시 상당히 큰 장점 중 하나입니다. 하지만 과대 적합되기 쉬운 알고리즘이라는 단점도 있습니다. 이번 장에서는 의사결정 트리의 특징과 장단점에 대해 차근차근 알아보겠습니다.
의사결정 트리 알고리즘의 이해
스무고개라는 놀이가 있습니다. 기본적인 놀이 방법은 술래 한 명을 정하고, 나머지 사람들은 최대 20번까지 술래에게 질문해서 술래가 생각하는 물건을 맞추는 것입니다. 예를 들어, 술래가 머릿속에서 “아이스크림을 생각합니다. 질문자 중 한 명이 술래에게 “생각한 물건이 먹을 수 있는 건가요?”라고 질문하면 술래가 “네”라고 대답합니다. 다음 질문자가 “그 물건은 차가운 건가요?”라고 질문하면 술래가 “네”라고 대답합니다. 다음 질문자가 “액체인가요?” 라고 질문하면, 술래가 “아니요”라고 대답합니다. 다음 질문자가 “단맛인가요?”라고 질문하면, 술래가 “네”라고 대답합니다. 이때쯤 질문자 중 한명이 “아이스크림”이라고 정답을 외치게 됩니다.
의사결정 트리 알고리즘은 방금 설명한 스무고개의 알고리즘과 상당히 비슷합니다. 데이터의 특징을 바탕으로 데이터를 연속적으로 분리하다 보면 결국 하나의 정답으로 데이터를 분류할 수 있습니다.
스무고개 놀이에서 적은 질문으로 정답을 맞추기 위해서는 의미 있는 질문을 먼저 하는 것이 중요하듯이 의사결정 트리에서도 의미 있는 질문을 먼저 하는 것이 상당히 중요합니다. 데이터의 특징 속에서 분류에 큰 영향을 끼치는 특징을 발견하고, 상위 노드로 선택하는 알고리즘 이 바로 의사결정 트리 알고리즘의 핵심이라고 할 수 있습니다. 다음과 같은 데이터가 있을 때 어떤 질문을 먼저 하는 것이 그 사람이 남자인지 여자인지 구분하기에 더 효율적일까요?
보다시피 군대를 다녀왔는지를 먼저 물어볼 경우 다음 질문을 할 필요 없이 바로 남자인지가 구분됩니다. 하지만 긴 생머리인지를 먼저 물어볼 경우 군대를 다녀왔는지 한 번 더 지목해야 모든 사람을 남자와 여자로 구분할 수 있습니다.
즉, 이 같은 데이터가 있을 때 군대를 다녀왔는지를 먼저 물어보는 것이 더 효율적이라고 할 수 있습니다. 머신러닝에서 의미 있는 질문이란 데이터의 특징 중 의미 있는 특징에 해당하며, 의사결정 트리의 핵심은 바로 영향력이 큰 특징을 상위 노드로, 영향력이 작은 특징은 하위 노드로 선택 하는 것입니다. 이렇게 해서 트리가 완성된 후, 단순히 입력된 데이터의 특징에 맞게 트리를 순회해서 해당 레이블을 찾게 됩니다. 그럼 데이터가 주어졌을 때 의사결정 트리는 어떻게 특징별 영향력의 크고 작음을 비교할 수 있을까요? 크고 작음을 비교하기 위해 수치적인 결과가 필요하며, 의사결정 트리는 대표적으 로 다음과 같은 두 가지 방법 중 하나를 사용합니다.
의사결정 트리 알고리즘과 정보 엔트로피의 관계
스무고개를 할 때 질문자는 질문을 하나 던질 때마다 약간씩의 정보를 획득합니다. 약간씩의 정보를 획득하는 과정은 정답에 대한 불확실성이 조금씩 줄어든다는 것과 같은 개념입니다. 정보 이론(Information Theory)에서는 이 불확실성을 수치적으로 표현한 값을 엔트로피 (entropy)라고 표현하며, 정보 이득(information gain)은 질문 이전의 엔트로피에서 질문 후의 엔트로피를 뺀 값입니다. 즉, 불확실성이 줄어든 정도를 정보 이득이라고 합니다. 그러므로 다음과 같은 식을 세울 수 있습니다.
질문 후의 정보 이득 = 질문 전의 엔트로피 - 질문 후의 엔트로피
의사결정 트리의 장점과 단점
지금까지 의사결정 트리 알고리즘에 대해 알아봤습니다. 실습하기에 앞서 마지막으로 이 알고리즘의 장점과 단점을 간략히 정리해보겠습니다. 먼저 장점은 다음과 같습니다. 첫째, 수학적인 지식이 없어도 결과를 해석하고 이해하기 쉽습니다. 둘째, 수치 데이터 및 범주 데이터에 모두 사용 가능합니다.
의사결정 트리의 가장 큰 단점은 과대 적합의 위험이 높다는 점입니다. 의사결정 트리 학습 시 적절한 리프 노드의 샘플 개수와 트리의 깊이에 제한을 둬서 학습 데이터에 너무 모델이 치우치지 않게 주의해야 합니다. 사이킷런의 의사결정 트리를 사용하면 과대 적합을 피하기 위한 리프 노드의 샘플 개수 및 트리의 깊이 제한을 손쉽게 설정할 수 있으며, 실습에서 직접 다뤄 보겠습니다.