의사결정나무
여러 조건을 차례로 적용해 데이터를 구분하고 결과를 예측하는 방법입니다.
고객이 다음 달 서비스를 해지할지 예측하려면 어떤 정보를 확인해야 할까요? 서비스 이용 기간이 짧은 고객은 해지할 가능성이 높을까요? 같은 이용 기간이라도 계약 유형이나 고객센터 문의 횟수에 따라 해지 가능성이 달라질까요?
이처럼 여러 조건을 차례로 적용해 데이터를 구분하고 결과를 예측하는 방법이 의사결정나무(Decision Tree)입니다.
의사결정나무는 사람이 질문에 답하면서 판단을 내리는 과정과 비슷한 구조를 가지고 있습니다. 예를 들어 '이용 기간이 12개월 이하인가?'라는 질문에서 시작해 '월 단위 계약인가?', '고객센터 문의가 3회 이상인가?'와 같은 조건을 확인합니다. 최종적으로 각 조건에 해당하는 고객이 서비스를 해지할 가능성을 예측하는 방식입니다.
이러한 구조 덕분에 의사결정나무는 머신러닝 알고리즘 중에서도 예측 과정을 비교적 쉽게 이해할 수 있는 방법으로 알려져 있습니다. 고객 이탈 예측, 대출 위험 분석, 학생의 학업 성취도 예측, 제품 불량 판별 등 다양한 분야에서 활용됩니다.
이번 글에서는 의사결정나무의 기본 개념부터 실제 분할 과정, 분류나무와 회귀나무의 차이, 지니 불순도와 엔트로피, 가지치기, 예측 결과 해석, 분석 시 주의해야 할 점까지 살펴보겠습니다.
의사결정나무란 무엇인가요?
의사결정나무는 데이터에 포함된 변수들을 기준으로 관측값을 반복적으로 나누어 결과를 예측하는 지도학습(Supervised Learning) 알고리즘입니다.
지도학습은 정답이 알려진 데이터를 이용해 예측모형을 학습하는 방법입니다. 예를 들어 기존 고객의 이용 기록과 실제 해지 여부가 있다면, 의사결정나무는 어떤 특성을 가진 고객에게서 해지가 많이 발생했는지 학습할 수 있습니다.
이후 새로운 고객의 정보를 입력하면 학습 과정에서 만들어진 조건을 따라 해당 고객이 속할 집단을 찾고, 그 집단에 대한 예측 결과를 제공합니다.
의사결정나무의 특징은 여러 변수 사이의 복잡한 관계를 하나의 수식으로 표현하는 대신, 조건에 따라 데이터를 단계적으로 나누는 규칙을 학습한다는 점입니다.
예를 들어 고객의 이용 기간이 짧더라도 장기 계약을 체결했다면 해지 가능성이 낮을 수 있고, 같은 월 단위 계약 고객이라도 고객센터 문의가 많으면 해지 가능성이 높아질 수 있습니다. 의사결정나무는 이러한 조건의 조합을 학습할 수 있습니다.
다만 학습된 분할 규칙은 관찰된 데이터의 패턴을 나타냅니다. 특정 조건이 예측 결과와 관련되어 있다고 해서 해당 조건이 결과의 직접적인 원인이라고 단정할 수는 없습니다.
의사결정나무의 구조와 분할 과정
의사결정나무는 이름처럼 나무 형태의 구조로 표현됩니다.
가장 위에서 시작해 조건을 확인하고, 조건의 결과에 따라 아래쪽으로 이동하면서 최종 예측에 도달합니다. 대표적인 구성 요소는 다음과 같습니다.
| 구성 요소 | 의미 |
|---|---|
| 루트 노드(Root Node) | 전체 데이터가 처음 시작하는 노드 |
| 내부 노드(Internal Node) | 특정 변수와 기준값을 이용해 데이터를 분할하는 지점 |
| 가지(Branch) | 조건에 따라 데이터가 이동하는 경로 |
| 리프 노드(Leaf Node) | 최종 예측 결과를 계산하는 지점 |
| 깊이(Depth) | 루트에서 특정 노드까지 이어지는 분할 단계 |
예를 들어 고객 이탈을 예측하는 나무가 다음과 같이 구성되었다고 가정해 보겠습니다.
새로운 고객의 이용 기간이 8개월이고 월 단위 계약을 사용하며 고객센터 문의가 4회라면, 왼쪽 조건들을 따라 이동해 해지율 60%가 나타난 리프 노드에 도달합니다. 이 경우 모형은 해당 리프에 포함된 학습 사례를 바탕으로 해지 가능성을 추정할 수 있습니다.
반면 이용 기간이 24개월인 고객이라면 첫 번째 조건에서 오른쪽으로 이동해 해지율 5%에 해당하는 리프에 도달합니다. 이처럼 의사결정나무는 어떤 조건을 거쳐 예측이 이루어졌는지 확인할 수 있다는 장점이 있습니다.
분할 조건은 어떻게 선택하나요?
의사결정나무의 조건은 분석자가 하나씩 직접 지정하는 것이 아니라, 일반적으로 알고리즘이 학습 데이터에서 적절한 분할 기준을 찾습니다.
예를 들어 고객의 서비스 해지 여부를 예측하기 위해 이용 기간, 월 요금, 계약 유형, 서비스 이용 횟수, 고객센터 문의 횟수를 사용했다고 가정해 보겠습니다.
모형은 이 변수들에 대해 다양한 분할 조건을 검토합니다. 이용 기간을 6개월, 12개월, 18개월로 나누거나 문의 횟수를 2회, 3회, 4회 기준으로 나누는 식입니다. 이후 각 조건으로 데이터를 나누었을 때 결과 범주가 얼마나 잘 구분되는지 비교합니다.
예를 들어 이용 기간을 12개월 기준으로 나누었을 때 한 집단에는 해지 고객이 많이 포함되고 다른 집단에는 유지 고객이 많이 포함된다면, 해당 조건은 유용한 분할 기준이 될 수 있습니다. 의사결정나무는 이러한 과정을 반복하여 점차 서로 다른 특성을 가진 집단을 형성합니다.
다만 일반적인 의사결정나무 알고리즘은 각 단계에서 현재 가장 유리한 분할을 선택하는 탐욕적(Greedy) 방식을 사용합니다. 따라서 만들어진 나무가 가능한 모든 구조 중 전역적으로 가장 좋은 나무라고 보장되는 것은 아닙니다.
지니 불순도·엔트로피·정보이득 이해하기
분류나무에서는 데이터를 나눈 뒤 각 집단에 특정 범주가 얼마나 집중되어 있는지 확인해야 합니다.
이때 사용하는 대표적인 기준이 지니 불순도입니다. 지니 불순도는 하나의 노드에 여러 범주가 얼마나 섞여 있는지 나타냅니다. 예를 들어 서비스 해지 고객과 유지 고객이 각각 50명씩 포함된 집단이 있다고 가정해 보겠습니다. 두 범주가 동일한 비율로 섞여 있으므로 불순도가 높습니다.
반대로 100명 중 95명이 해지 고객이고 5명만 유지 고객이라면 특정 범주가 대부분을 차지하므로 불순도가 낮습니다. 지니 불순도는 다음과 같이 계산합니다.
Gini = 1 - Σpᵢ²
여기서 pᵢ는 각 범주가 해당 노드에서 차지하는 비율입니다.
실제 계산 예시
| 노드의 범주 구성 | 지니 불순도 |
|---|---|
| 해지 50% · 유지 50% | 0.50 |
| 해지 70% · 유지 30% | 0.42 |
| 해지 90% · 유지 10% | 0.18 |
| 해지 100% · 유지 0% | 0.00 |
이항분류에서는 두 범주가 각각 50%일 때 지니 불순도가 가장 높고, 하나의 범주만 존재하면 0이 됩니다.
의사결정나무는 분할 후 만들어지는 노드들의 가중평균 불순도가 낮아지는 조건을 선호합니다. 예를 들어 하나의 혼합된 고객 집단을 해지 고객이 많은 집단과 유지 고객이 많은 집단으로 구분할 수 있다면 유용한 분할로 평가될 수 있습니다.
다만 지니 불순도가 낮다고 해서 새로운 데이터에서의 예측 성능이 반드시 높은 것은 아닙니다. 노드에 포함된 표본 수가 지나치게 적으면 학습 데이터의 우연한 패턴을 반영했을 가능성도 있기 때문입니다.
엔트로피(Entropy)와 정보이득(Information Gain)은 무엇인가요?
분류나무에서 사용하는 또 다른 대표적인 분할 기준은 엔트로피입니다.
엔트로피는 범주 분포의 불확실성을 나타내는 지표입니다. 한 노드에서 서로 다른 범주가 비슷한 비율로 나타나면 불확실성이 높고, 특정 범주가 대부분을 차지하면 불확실성이 낮습니다. 엔트로피는 일반적으로 다음과 같이 계산합니다.
Entropy = -Σpᵢ log₂(pᵢ)
확률이 0인 항의 기여는 0으로 처리합니다. 이항분류에서 두 범주의 비율이 각각 50%라면 엔트로피는 1입니다. 반면 모든 관측값이 하나의 범주에 속한다면 엔트로피는 0입니다. 의사결정나무는 분할 전 엔트로피에서 분할 후 노드들의 가중평균 엔트로피를 뺀 정보이득을 계산할 수 있습니다.
정보이득 = 분할 전 엔트로피 - 분할 후 가중평균 엔트로피
정보이득이 크다는 것은 해당 조건으로 데이터를 나누었을 때 범주에 대한 불확실성이 많이 감소했다는 의미입니다.
지니 불순도와 엔트로피의 차이
| 구분 | 지니 불순도 | 엔트로피 |
|---|---|---|
| 주요 의미 | 범주가 섞여 있는 정도 | 범주 분포의 불확실성 |
| 최솟값 | 0 | 0 |
| 완전히 단일 범주인 노드 | 0 | 0 |
| 활용 목적 | 분할 기준 선택 | 분할 기준 선택 |
| 특징 | 계산이 비교적 단순 | 정보이론을 기반으로 함 |
두 기준은 많은 데이터에서 비슷한 분할 결과를 만들 수 있지만, 항상 동일한 나무를 생성하는 것은 아닙니다. 따라서 지니 불순도와 엔트로피 중 하나가 모든 문제에서 우수하다고 판단하기보다 데이터에 따라 예측 성능을 비교할 수 있습니다.
실제 사례: 고객의 서비스 해지 예측
한 구독 서비스 기업에서 고객 5,000명의 데이터를 이용해 다음 달 서비스 해지 여부를 예측한다고 가정해 보겠습니다.
전체 고객 중 650명은 서비스를 해지했고, 나머지 4,350명은 서비스를 유지했습니다. 해지 고객의 비율은 13%입니다. 분석에는 다음 변수를 사용했습니다.
| 변수 | 데이터 형태 | 내용 |
|---|---|---|
| 이용 기간 | 수치형 | 서비스 이용 개월 수 |
| 월 요금 | 수치형 | 매월 지불하는 요금 |
| 계약 유형 | 범주형 | 월 단위 / 연 단위 |
| 서비스 이용 횟수 | 수치형 | 최근 30일 이용 횟수 |
| 고객센터 문의 횟수 | 수치형 | 최근 90일 문의 횟수 |
| 해지 여부 | 범주형 | 해지 / 유지 |
연구 질문은 다음과 같습니다.
"고객의 이용 특성을 바탕으로 다음 달 서비스를 해지할 가능성을 예측할 수 있을까?"
의사결정나무를 학습한 결과, 다음과 같은 고객 집단이 형성되었다고 가정하겠습니다.
주요 리프 노드별 해지율
| 고객 집단 | 고객 수 | 해지 고객 | 해지율 |
|---|---|---|---|
| 이용 기간 12개월 이하 · 월 단위 계약 · 문의 3회 이상 | 200 | 120 | 60% |
| 이용 기간 12개월 이하 · 월 단위 계약 · 문의 3회 미만 | 400 | 120 | 30% |
| 이용 기간 12개월 이하 · 연 단위 계약 | 300 | 36 | 12% |
| 이용 기간 12개월 초과 | 4,100 | 374 | 약 9.1% |
| 합계 | 5,000 | 650 | 13% |
이 결과에서 이용 기간이 짧고 월 단위 계약을 사용하면서 고객센터 문의가 많은 고객 집단의 해지율이 가장 높게 나타났습니다. 반면 이용 기간이 12개월을 초과한 고객 집단의 해지율은 약 9.1%로 전체 평균보다 낮았습니다.
이처럼 의사결정나무는 여러 조건의 조합에 따라 서로 다른 위험 수준을 가진 집단을 구분할 수 있습니다.
다만 학습 데이터에서 특정 리프의 해지율이 60%였다고 해서 새로운 고객의 해지 확률이 정확히 60%라는 뜻은 아닙니다. 예측모형이 실제 운영 환경에서도 유효한지 별도의 평가 데이터로 확인해야 합니다.
분류나무와 회귀나무의 차이와 예측 방식
의사결정나무는 예측하려는 종속변수의 형태에 따라 분류나무와 회귀나무로 구분됩니다.
분류나무(Classification Tree)
분류나무는 종속변수가 범주형일 때 사용하는 방법입니다. 예를 들어 고객의 서비스 해지 여부, 대출 연체 여부, 제품 불량 여부 등을 예측할 수 있습니다. 분류나무에서는 각 리프 노드에 포함된 범주의 분포를 이용하여 예측 범주나 예측 확률을 계산할 수 있습니다.
회귀나무(Regression Tree)
회귀나무는 종속변수가 연속형 수치일 때 사용하는 방법입니다. 예를 들어 고객의 다음 달 구매 금액이나 주택 가격, 제품 생산량 등을 예측할 수 있습니다. 일반적인 제곱오차 기반 회귀나무에서는 리프 노드에 포함된 관측값의 평균을 해당 노드의 예측값으로 사용합니다.
분류나무와 회귀나무 비교
| 구분 | 분류나무 | 회귀나무 |
|---|---|---|
| 종속변수 | 범주형 | 연속형 수치 |
| 주요 결과 | 예측 범주, 범주별 확률 | 예측 수치 |
| 대표 분할 기준 | 지니 불순도, 엔트로피 | 제곱오차, 분산 감소 |
| 활용 사례 | 고객 이탈 여부 | 고객 구매 금액 |
| 평가 지표 | 정확도, 정밀도, 재현율, ROC-AUC | MAE, RMSE, R² |
두 방법 모두 조건에 따라 데이터를 반복적으로 나눈다는 원리는 같지만, 예측하는 결과와 분할 기준이 다릅니다.
회귀나무는 실제로 어떻게 예측하나요?
온라인 쇼핑몰에서 고객의 다음 달 구매 금액을 예측한다고 가정해 보겠습니다.
고객의 최근 방문 횟수, 이전 구매 금액, 회원 가입 기간 등을 이용하여 회귀나무를 학습할 수 있습니다. 학습 결과 다음과 같은 규칙이 만들어졌다고 가정하겠습니다.
| 분할 조건 | 해당 고객의 평균 구매 금액 |
|---|---|
| 최근 방문 3회 미만 | 4만 원 |
| 최근 방문 3회 이상 · 이전 구매 금액 10만 원 미만 | 9만 원 |
| 최근 방문 3회 이상 · 이전 구매 금액 10만 원 이상 | 18만 원 |
새로운 고객이 최근 한 달 동안 쇼핑몰을 5회 방문했고 이전 구매 금액이 15만 원이라면, 해당 고객은 세 번째 리프 노드에 도달합니다. 이 경우 회귀나무는 다음 달 구매 금액을 18만 원으로 예측할 수 있습니다.
회귀나무는 이처럼 변수의 조건에 따라 서로 다른 예측값을 제공합니다. 하지만 같은 리프 노드에 속한 고객에게는 일반적으로 같은 예측값을 제공하므로 예측 결과가 계단 형태로 나타날 수 있습니다. 또한 기본적인 회귀나무는 학습 데이터의 범위를 넘어서는 추세를 직선처럼 자연스럽게 외삽하는 데 한계가 있습니다.
예를 들어 기존 데이터에서 관찰하지 못한 매우 높은 구매 금액을 예측해야 하는 경우, 리프의 평균값을 사용하는 방식만으로는 새로운 범위의 값을 충분히 표현하지 못할 수 있습니다.
주요 설정과 가지치기
의사결정나무는 복잡도를 조절하기 위한 여러 설정을 제공합니다.
대표적으로 최대 깊이, 최소 분할 표본 수, 최소 리프 표본 수, 최대 리프 노드 수 등이 있습니다.
| 설정 | 의미 | 조절했을 때의 일반적인 변화 |
|---|---|---|
| 최대 깊이(Max Depth) | 허용할 나무의 최대 깊이 | 작을수록 단순한 나무 |
| 최소 분할 표본 수(Min Samples Split) | 노드를 분할하기 위한 최소 표본 수 | 클수록 세부 분할 제한 |
| 최소 리프 표본 수(Min Samples Leaf) | 하나의 리프에 필요한 최소 표본 수 | 클수록 작은 집단 생성 억제 |
| 최대 리프 수(Max Leaf Nodes) | 최종 리프의 최대 개수 | 작을수록 결과 집단 수 감소 |
| 분할 기준(Criterion) | 최적 분할을 평가하는 지표 | 지니 불순도, 엔트로피 등 |
| 가지치기 강도 | 불필요한 분기를 줄이는 정도 | 강할수록 단순한 나무 |
예를 들어 최대 깊이를 3으로 설정하면 나무가 지나치게 세분화되는 것을 제한할 수 있습니다. 반면 최대 깊이를 20으로 설정하면 더 복잡한 조건 조합을 학습할 수 있지만 과적합 위험도 높아질 수 있습니다.
최소 리프 표본 수도 중요합니다. 리프에 고객이 단 2명만 포함되어 있다면 두 고객의 결과만으로 새로운 고객의 해지 가능성을 추정하게 됩니다.
반대로 리프에 최소 100명의 고객이 포함되도록 설정하면 매우 작은 집단에 기반한 불안정한 예측을 줄일 수 있습니다. 다만 실제로 중요한 소규모 고객 집단의 패턴까지 놓칠 가능성도 있습니다. 따라서 설정값은 임의로 크게 또는 작게 정하기보다 교차검증을 통해 선택하는 것이 좋습니다.
가지치기(Pruning)란 무엇인가요?
의사결정나무는 조건을 반복해서 나눌수록 점점 복잡해질 수 있습니다.
학습 데이터만을 기준으로 보면 나무가 깊어질수록 예측 오류가 줄어드는 경우가 많습니다. 하지만 새로운 데이터에서는 복잡한 나무가 오히려 낮은 성능을 보일 수 있습니다. 이러한 문제를 줄이기 위해 사용하는 방법이 가지치기입니다.
가지치기는 예측 성능에 비해 불필요하게 복잡한 분기를 제거하여 나무를 단순하게 만드는 방법입니다. 크게 두 가지 접근으로 구분할 수 있습니다.
사전 가지치기(Pre-pruning)
나무를 학습하는 과정에서 추가 분할을 제한합니다. 최대 깊이, 최소 리프 표본 수, 최소 분할 표본 수 등을 설정하는 방식입니다.
사후 가지치기(Post-pruning)
먼저 비교적 큰 나무를 만든 뒤 불필요한 분기를 제거합니다. 대표적으로 비용복잡도 가지치기(Cost-Complexity Pruning)가 있습니다. 이 방법은 나무의 예측 오차와 복잡도를 함께 고려하여 가지치기 수준을 결정합니다.
두 방식 모두 과적합을 완화하고 결과를 이해하기 쉽게 만들 수 있지만, 지나치게 단순한 나무는 중요한 패턴을 놓칠 수 있습니다. 따라서 가지치기를 적용할 때는 단순히 나무의 크기를 줄이는 데 집중하기보다 검증 데이터에서의 예측 성능을 확인해야 합니다.
의사결정나무에서 과적합은 어떻게 발생하나요?
과적합(Overfitting)은 모형이 학습 데이터의 일반적인 패턴뿐 아니라 우연한 변동까지 지나치게 학습하는 현상입니다.
의사결정나무는 분할을 반복하면서 매우 작은 집단까지 구분할 수 있으므로 과적합에 주의해야 합니다. 예를 들어 고객 5,000명을 대상으로 해지 여부를 예측하는 나무를 만들었다고 가정해 보겠습니다.
나무 깊이에 따른 예측 성능 예시
| 최대 깊이 | 학습 정확도 | 검증 정확도 |
|---|---|---|
| 2 | 86% | 85% |
| 4 | 89% | 88% |
| 8 | 95% | 86% |
| 제한 없음 | 100% | 79% |
최대 깊이가 4일 때는 학습 정확도와 검증 정확도가 모두 비교적 높게 나타났습니다. 하지만 깊이가 증가하면서 학습 정확도는 계속 높아졌지만 검증 정확도는 오히려 낮아졌습니다. 특히 깊이에 제한이 없는 나무는 학습 데이터를 완벽하게 분류했지만 검증 데이터에서는 정확도가 79%로 떨어졌습니다.
이러한 결과는 모형이 학습 데이터의 세부적인 패턴에 지나치게 맞춰졌을 가능성을 보여줍니다. 다만 정확도만으로 과적합 여부를 완전히 판단할 수는 없습니다. 클래스 불균형이 심한 문제에서는 정밀도, 재현율, PR-AUC 등 다른 평가 지표도 함께 확인해야 합니다.
예측 성능과 분류 기준값 평가하기
의사결정나무의 평가 방법은 분류나무인지 회귀나무인지에 따라 달라집니다.
분류나무의 평가 지표
| 지표 | 의미 |
|---|---|
| 정확도(Accuracy) | 전체 예측 중 올바르게 분류한 비율 |
| 정밀도(Precision) | 양성으로 예측한 사례 중 실제 양성의 비율 |
| 재현율(Recall) | 실제 양성 사례 중 올바르게 찾아낸 비율 |
| F1 점수 | 정밀도와 재현율의 조화평균 |
| ROC-AUC | 양성과 음성 사례를 구분하는 순위 성능 |
| PR-AUC | 양성 예측의 정밀도와 재현율 관계를 요약 |
| Brier Score | 예측 확률과 실제 결과 사이의 제곱오차 평균 |
예를 들어 고객의 90%가 서비스를 유지하고 10%만 해지한다면 모든 고객을 유지로 예측해도 정확도는 90%가 됩니다. 따라서 고객 이탈처럼 관심 범주의 비율이 낮은 데이터에서는 정확도만으로 모형을 평가해서는 안 됩니다.
회귀나무의 평가 지표
| 지표 | 의미 |
|---|---|
| MAE | 실제값과 예측값 사이의 절대오차 평균 |
| MSE | 실제값과 예측값 사이의 제곱오차 평균 |
| RMSE | 평균제곱오차의 제곱근 |
| R² | 실제값의 변동을 예측값이 얼마나 설명하는지 평가 |
고객의 구매 금액을 예측하는 회귀나무라면 MAE나 RMSE를 이용하여 실제 구매 금액과 예측 금액의 차이를 확인할 수 있습니다. 또한 학습 데이터와 검증 데이터의 성능을 비교하여 과적합 가능성을 점검할 수 있습니다.
예측 확률과 분류 기준값은 어떻게 해석하나요?
분류나무에서는 각 리프 노드에 포함된 범주의 비율을 이용하여 예측 확률을 계산할 수 있습니다.
예를 들어 어떤 리프 노드에 고객 100명이 포함되어 있고 그중 60명이 서비스를 해지했다면, 기본적인 분류나무는 해당 리프에 도달한 새로운 고객의 해지 확률을 60%로 추정할 수 있습니다. 하지만 실제로 60%의 고객이 해지할 것인지 확인하려면 별도의 데이터에서 예측 확률의 보정 상태를 평가해야 합니다.
특히 노드에 포함된 표본 수가 적으면 확률 추정이 불안정할 수 있습니다.
분류 기준값(Threshold)
예측된 확률을 해지 또는 유지라는 범주로 바꾸려면 분류 기준값을 사용할 수 있습니다. 예를 들어 기준값을 0.5로 설정했다면 예측 해지 확률이 50% 이상인 고객을 해지 위험 고객으로 분류합니다. 하지만 기준값을 낮추거나 높이면 정밀도와 재현율 등 분류 성능이 달라질 수 있습니다.
따라서 기준값은 실제 업무에서 어떤 예측 오류가 더 중요한지 고려해 설정하는 것이 좋습니다.
예를 들어 해지 고객을 놓치는 비용이 크다면 재현율을 높이는 방향으로 기준값을 조정할 수 있습니다. 반대로 해지하지 않을 고객에게 불필요한 혜택을 제공하는 비용이 크다면 정밀도를 높이는 방향으로 기준값을 선택할 수 있습니다.
다만 이러한 기준값은 학습·검증 과정에서 결정하고 최종 평가 데이터는 선택된 기준값의 성능을 확인하는 데 사용하는 것이 적절합니다.
의사결정나무의 변수 중요도 이해하기
의사결정나무에서는 어떤 변수가 데이터 분할에 많이 기여했는지 확인할 수 있습니다.
이때 사용하는 대표적인 지표가 변수 중요도(Feature Importance)입니다. 일반적인 불순도 기반 변수 중요도는 각 변수가 분할 과정에서 불순도를 얼마나 감소시켰는지를 기준으로 계산합니다. 예를 들어 다음과 같은 결과가 나타났다고 가정해 보겠습니다.
| 변수 | 중요도 |
|---|---|
| 이용 기간 | 0.38 |
| 계약 유형 | 0.27 |
| 고객센터 문의 횟수 | 0.19 |
| 월 요금 | 0.11 |
| 서비스 이용 횟수 | 0.05 |
| 합계 | 1.00 |
이 결과에서 이용 기간의 중요도가 0.38로 가장 높게 나타났습니다. 이는 학습된 의사결정나무에서 이용 기간을 이용한 분할이 전체 불순도 감소에 상대적으로 크게 기여했다는 의미입니다. 하지만 중요도가 0.38이라고 해서 이용 기간이 고객 해지에 38%의 인과적 영향을 미친다는 뜻은 아닙니다.
또한 불순도 기반 중요도는 분할 가능한 값이 많은 변수에 유리하게 나타나는 등 편향이 존재할 수 있습니다. 따라서 변수 중요도를 해석할 때는 순열 중요도(Permutation Importance)와 같은 다른 방법을 함께 검토할 수 있습니다.
로지스틱 회귀·랜덤 포레스트와의 차이
의사결정나무와 로지스틱 회귀는 모두 이항분류 문제에 사용할 수 있지만 관계를 학습하는 방식에서 차이가 있습니다.
로지스틱 회귀는 독립변수와 사건 발생의 로그 오즈 사이의 관계를 수학적 모형으로 표현합니다. 반면 의사결정나무는 변수의 조건에 따라 데이터를 반복적으로 나눕니다.
| 구분 | 로지스틱 회귀 | 의사결정나무 |
|---|---|---|
| 기본 원리 | 로그 오즈를 설명변수의 함수로 모형화 | 변수의 조건에 따라 반복적으로 분할 |
| 관계 표현 | 기본 모형에서는 로그 오즈의 선형관계 | 비선형·조건부 관계를 분할로 표현 |
| 결과 해석 | 회귀계수, 오즈비 | 분할 규칙, 리프별 예측 |
| 상호작용 | 일반적으로 항을 직접 추가 | 분할 구조로 학습 가능 |
| 주요 한계 | 잘못 지정된 함수 형태의 영향 | 깊은 나무의 과적합과 불안정성 |
예를 들어 고객센터 문의 횟수가 해지 확률과 어떤 관계를 가지는지 오즈비로 설명하고 싶다면 로지스틱 회귀가 유용할 수 있습니다. 반면 이용 기간이 짧은 고객에게서만 문의 횟수와 해지 여부의 관계가 뚜렷하게 나타난다면 의사결정나무가 이러한 조건부 패턴을 표현하기 쉬울 수 있습니다.
다만 로지스틱 회귀에서도 상호작용항이나 비선형항을 추가하면 복잡한 관계를 표현할 수 있습니다. 따라서 두 방법 중 어느 하나가 항상 더 우수하다고 판단할 수는 없습니다.
의사결정나무와 랜덤 포레스트는 어떻게 다른가요?
의사결정나무는 하나의 나무를 학습하는 방법입니다.
반면 랜덤 포레스트(Random Forest)는 여러 의사결정나무를 학습하고 그 결과를 결합하는 앙상블 방법입니다. 단일 의사결정나무는 전체 분할 구조를 그림으로 표현하기 쉬워 개별 예측이 어떤 조건을 거쳐 이루어졌는지 확인하기 좋습니다.
반면 랜덤 포레스트는 여러 나무의 예측을 종합하므로 단일 나무보다 안정적인 예측을 제공하는 경우가 많습니다.
| 구분 | 의사결정나무 | 랜덤 포레스트 |
|---|---|---|
| 나무 수 | 일반적으로 1개 | 여러 개 |
| 예측 방식 | 하나의 나무를 따라 예측 | 여러 나무의 예측을 결합 |
| 해석 가능성 | 비교적 높음 | 전체 구조 해석은 상대적으로 어려움 |
| 예측 안정성 | 데이터 변화에 민감할 수 있음 | 여러 나무를 결합해 변동성 완화 가능 |
| 계산 비용 | 비교적 작음 | 나무 수에 따라 증가 |
예를 들어 고객에게 적용할 수 있는 단순한 분류 기준이 필요하다면 의사결정나무가 유용할 수 있습니다. 반면 더 높은 예측 성능과 안정성이 중요하다면 랜덤 포레스트와 같은 앙상블 방법을 함께 비교할 수 있습니다.
다만 랜덤 포레스트가 모든 데이터에서 단일 의사결정나무보다 좋은 결과를 보이는 것은 아닙니다. 실제 예측 성능은 별도의 검증 데이터에서 확인해야 합니다.
의사결정나무에서 주의해야 할 점
의사결정나무는 구조가 직관적이지만 분석 결과를 신뢰하기 위해서는 몇 가지 사항을 확인해야 합니다.
나무가 너무 깊어지지 않도록 해야 합니다.
나무가 지나치게 깊어지면 매우 작은 집단까지 구분하게 되어 학습 데이터에 과적합될 수 있습니다. 따라서 최대 깊이, 최소 리프 표본 수, 가지치기 등을 이용해 복잡도를 조절해야 합니다.
작은 리프 노드의 예측에 주의해야 합니다.
어떤 리프에 고객이 5명만 포함되어 있고 그중 4명이 서비스를 해지했다면 학습 데이터의 해지율은 80%입니다. 하지만 표본 수가 매우 작기 때문에 새로운 고객의 실제 해지 가능성을 안정적으로 추정하기 어려울 수 있습니다. 따라서 리프별 표본 수와 예측 확률의 신뢰성을 함께 확인해야 합니다.
데이터가 조금 달라져도 나무 구조가 바뀔 수 있습니다.
의사결정나무는 특정 분할 조건을 선택하는 과정에서 데이터의 작은 변화에 민감할 수 있습니다. 예를 들어 일부 고객의 기록이 추가되거나 제거되면 처음 선택한 분할 변수가 달라질 수도 있습니다. 따라서 개별 나무의 분할 구조를 절대적인 규칙으로 해석하지 않아야 합니다.
범주형 변수의 처리 방식을 확인해야 합니다.
의사결정나무는 수치형 변수뿐 아니라 범주형 변수도 활용할 수 있지만, 소프트웨어마다 범주형 변수를 처리하는 방식은 다릅니다. 일부 구현은 범주형 변수를 직접 처리할 수 있지만, 다른 구현에서는 원-핫 인코딩(One-Hot Encoding) 등의 변환이 필요합니다.
따라서 사용하려는 라이브러리에서 어떤 데이터 형식을 지원하는지 확인해야 합니다.
데이터 누수를 방지해야 합니다.
미래의 결과를 예측하는 모형에 예측 시점 이후에만 알 수 있는 정보를 포함해서는 안 됩니다. 예를 들어 다음 달 고객의 해지 여부를 예측하면서 다음 달의 해지 신청 기록을 입력변수로 사용하면 실제보다 지나치게 좋은 성능이 나타날 수 있습니다.
또한 결측값 대체나 변수 인코딩 등의 전처리 기준도 학습 데이터에서만 추정해야 합니다.
통계적 관련성과 인과관계를 구분해야 합니다.
의사결정나무에서 '이용 기간 12개월 이하'라는 조건이 주요 분할로 선택되었다고 해서 이용 기간 자체가 해지의 직접적인 원인이라는 뜻은 아닙니다. 계약 유형, 고객 특성, 서비스 만족도 등 다른 요인이 함께 작용할 수 있으므로 분할 규칙은 예측에 활용된 데이터 패턴으로 해석해야 합니다.
의사결정나무 결과는 어떻게 보고하나요?
의사결정나무 결과를 보고할 때는 분석에 사용한 변수와 표본 수, 나무의 주요 설정, 학습·평가 방법, 최종 예측 성능, 주요 분할 규칙 등을 함께 제시하는 것이 좋습니다.
앞서 살펴본 고객 이탈 예측 사례를 이용하면 다음과 같이 작성할 수 있습니다.
결과 보고 예시
고객의 서비스 해지 여부를 예측하기 위해 의사결정나무 분석을 실시하였다. 분석에는 이용 기간, 월 요금, 계약 유형, 서비스 이용 횟수, 고객센터 문의 횟수를 독립변수로 사용하였다. 학습된 모형에서는 이용 기간과 계약 유형, 고객센터 문의 횟수가 주요 분할 조건으로 나타났다. 특히 이용 기간이 12개월 이하이고 월 단위 계약을 사용하며 고객센터 문의가 3회 이상인 집단의 학습 데이터 해지율은 60%로 나타났다. 이는 전체 고객의 해지율인 13%보다 높은 수준으로, 해당 조건에 속한 고객 집단에서 해지가 상대적으로 많이 관찰되었음을 의미한다.
실제 예측 연구에서는 이러한 학습 데이터의 분할 결과뿐 아니라 별도의 평가 데이터에서 얻은 정확도, 정밀도, 재현율, ROC-AUC, PR-AUC 등의 성능 지표를 함께 보고해야 합니다.
또한 최종 나무의 최대 깊이, 최소 리프 표본 수, 가지치기 설정 등을 명시하면 다른 연구자가 분석을 재현하는 데 도움이 됩니다.
의사결정나무는 어디에 활용할 수 있나요?
의사결정나무는 여러 조건을 이용해 결과를 예측하거나 집단별 특성을 이해해야 하는 다양한 분야에서 활용됩니다.
마케팅 및 고객 분석
고객의 서비스 해지 여부, 구매 가능성, 재구매 여부 등을 예측할 수 있습니다. 특히 특정 행동이나 이용 특성을 가진 고객 집단을 구분하는 데 유용합니다.
금융 및 신용위험 분석
대출 연체 가능성, 채무불이행 여부, 부정거래 탐지 등에 사용할 수 있습니다. 다만 실제 금융 의사결정에 적용할 때는 공정성, 설명 가능성, 관련 규정 등을 함께 고려해야 합니다.
교육 연구
학생의 시험 합격 여부, 중도 탈락 가능성, 학업 성취도 등을 예측할 수 있습니다. 또한 어떤 학습 조건을 가진 학생 집단에서 특정 결과가 많이 나타나는지 탐색하는 데 활용할 수 있습니다.
보건 및 의료 연구
환자의 검사 결과나 건강 지표를 이용해 특정 건강 상태의 범주 또는 연속형 결과를 예측하는 연구에 사용할 수 있습니다. 다만 의료 현장에 적용하려면 충분한 외부 검증과 안전성 평가가 필요합니다.
제조업 및 품질관리
제품의 불량 여부, 생산 품질 등급, 설비 고장 가능성 등을 예측할 수 있습니다.
인사 및 조직 연구
직원의 이직 여부, 교육 프로그램 수료 여부, 업무 성과 등과 관련된 예측모형을 구성할 수 있습니다. 이처럼 의사결정나무는 수치형 변수와 범주형 변수를 활용하고, 여러 조건의 조합을 통해 결과를 예측하려는 문제에서 폭넓게 사용됩니다.
의사결정나무는 데이터를 나누는 규칙을 통해 결과를 예측합니다.
의사결정나무는 데이터에 포함된 변수와 조건을 이용해 관측값을 반복적으로 나누고, 최종적으로 각 집단에 대한 예측 결과를 계산하는 머신러닝 방법입니다.
결과변수가 범주형이면 분류나무를, 연속형 수치라면 회귀나무를 사용할 수 있습니다. 분류나무에서는 지니 불순도와 엔트로피 등을 분할 기준으로 사용하며, 회귀나무에서는 제곱오차나 분산 감소 등을 활용합니다.
의사결정나무의 가장 큰 장점은 예측 과정이 비교적 직관적이라는 것입니다. 어떤 조건을 거쳐 특정 집단으로 분류되었는지 확인할 수 있어 복잡한 데이터의 패턴을 이해하는 데 도움이 됩니다.
하지만 나무가 지나치게 깊어지면 과적합이 발생할 수 있고, 데이터의 작은 변화에도 분할 구조가 달라질 수 있습니다. 따라서 나무의 복잡도를 조절하고 학습 데이터와 평가 데이터를 분리하여 성능을 검증하는 것이 중요합니다.
의사결정나무의 목적은 단순히 데이터를 여러 집단으로 나누는 것이 아니라, 결과를 구분하는 조건과 패턴을 학습하여 새로운 데이터에 적용할 수 있는 예측 규칙을 만드는 데 있습니다.