결정 트리(Decision Tree)란? AI에서 조건을 나눠 분류하고 수치를 예측하는 방법
TL;DR
결정 트리(Decision Tree)는 입력 특징의 조건으로 데이터를 반복해서 나누고 마지막 잎에서 예측하는 지도학습 모델입니다. 분류에서는 클래스별 비율을, 회귀에서는 목표값의 대표값을 사용합니다. 분기 기준을 데이터에서 배운다는 점이 사람이 만든 규칙표와 다르며 트리 깊이·잎의 표본 수·가지치기를 함께 조절해야 과적합을 줄일 수 있습니다.
핵심 3줄 요약
- 핵심 1
조건을 데이터에서 배웁니다. 각 분기에서 특징과 경계값을 골라 정답이 비슷한 사례들이 모이도록 나눕니다. - 핵심 2
한 경로를 따라 예측합니다. 새 입력은 루트에서 잎까지 이동하며 도착한 잎의 클래스 비율이나 수치로 결과를 받습니다. - 핵심 3
복잡도와 검증을 함께 봅니다. 학습 데이터를 세밀하게 나눌수록 새 데이터에도 잘 맞는 것은 아닙니다. 깊이와 잎 크기를 점검합니다.
이 글에서 다룰 내용
- 결정 트리의 한 문장 정의와 기본 구조
- 문의 분류로 이해하는 조건 분기 예시
- 불순도·정보 이득·잎 예측의 작동 방식
- 깊이·최소 표본 수·가지치기 설정의 뜻
- 랜덤 포레스트·규칙 엔진·군집 트리와의 차이
- 실전 사용처와 데이터·평가 체크리스트
- 불안정성·확률·특성 중요도의 주의점
결정 트리를 한 문장으로 정의하면 무엇인가요?
결정 트리는 정답이 있는 데이터에서 특징별 분기 조건을 학습해 입력 공간을 여러 영역으로 나누고 각 영역에 예측값을 붙이는 비모수 모델입니다.
한국어로 의사결정나무 또는 의사결정 트리라고도 부릅니다. 시작 지점은 루트, 중간의 질문은 내부 노드, 질문의 결과로 이어지는 연결은 가지, 더 나누지 않는 끝 지점은 잎입니다. 나무 그림을 거꾸로 세워 위에서 아래로 읽는 모습을 생각하면 쉽습니다.
비모수라는 말은 설정이나 학습할 값이 없다는 뜻이 아닙니다. 하나의 고정된 직선이나 정규분포로 관계를 제한하지 않는다는 뜻입니다. 어떤 특징을 어떤 값에서 나눌지, 어느 깊이까지 자랄지는 데이터와 학습 설정에 따라 달라집니다.
한 줄 정리: 결정 트리는 정답을 잘 구분하는 질문을 데이터에서 찾아 연결한 예측용 나무입니다.
쉬운 예시로 이해해 볼까요?
고객 문의의 대기 시간과 재문의 횟수로 긴급 처리 여부를 예측한다고 가정해 보겠습니다. 과거 문의에는 담당자가 확인한 긴급·일반 라벨이 붙어 있습니다. 트리는 대기 시간이 정한 경계보다 긴지 먼저 묻고 한쪽 가지에서 재문의 횟수를 다시 확인하는 식으로 자랄 수 있습니다.
새 문의가 들어오면 학습 때 정한 질문을 차례로 통과합니다. 도착한 잎에 긴급 문의가 많이 모여 있었다면 긴급 클래스를 예측합니다. 이런 경로는 작동 원리를 설명하기 위한 가상 예시이며 실제 업무에서 검증된 처리 규칙이나 성능 결과는 아닙니다.
같은 입력으로 예상 처리 시간을 예측한다면 회귀 트리가 됩니다. 제곱 오차를 기준으로 학습한 기본 회귀 트리는 도착한 잎의 학습 목표값 평균을 사용합니다. 같은 잎에 도착한 문의들은 입력이 조금 달라도 같은 예측값을 받으므로 결과가 계단처럼 바뀝니다.
쉬운 예시: 사람이 질문 목록을 모두 정해 주는 대신, 과거 정답을 가장 잘 나누는 질문과 순서를 모델이 찾는 방식입니다.
왜 AI에서 결정 트리가 중요한가요?
예측 경로를 조건문으로 읽습니다
얕은 트리는 어떤 조건 때문에 이 결과에 도착했는지 눈으로 따라가기 쉽습니다. 예측값만 확인하는 대신 사용한 특징과 분기점을 검토할 수 있어 입력 데이터에 잘못된 열이나 의심스러운 규칙이 들어갔는지 살피는 데 도움이 됩니다. 다만 깊은 트리까지 저절로 읽기 쉬운 것은 아닙니다.
비선형 관계와 조건의 조합을 다룹니다
대기 시간이 길 때만 재문의 횟수가 중요해지는 관계도 연속된 분기로 표현합니다. 모든 상황에서 한 특징이 같은 크기로 영향을 준다고 가정하지 않습니다. 기본적인 수치형 트리는 한 번에 한 특징을 자르므로 복잡한 대각선 경계는 여러 분기로 근사합니다.
다른 트리 모델을 이해하는 출발점입니다
랜덤 포레스트나 트리 기반 부스팅을 읽으려면 먼저 노드·분기·잎의 뜻을 알아야 합니다. 단일 트리는 자체 예측 모델이면서 여러 트리를 결합하는 모델의 재료이기도 합니다. 하나의 트리 성능과 여러 트리를 합친 성능은 같은 기준으로 따로 평가합니다.
결정 트리는 어떤 순서로 작동하나요?
특징과 경계값 후보를 비교합니다
학습 데이터의 한 노드에서 여러 특징과 분할 후보를 살펴봅니다. 기본적인 탐욕적 학습은 그 단계에서 불순도나 오차를 가장 많이 줄이는 후보를 고릅니다. 지금 좋은 분기를 선택한다고 최종 나무 전체가 가능한 모든 나무 중 최적이라는 보장은 없습니다.
분류는 섞임을, 회귀는 오차를 줄입니다
분류의 불순도는 한 노드에 서로 다른 클래스가 얼마나 섞였는지 나타냅니다. 지니 불순도와 엔트로피가 대표적입니다. 정보 이득은 분할 전보다 분할 후의 가중 평균 불순도가 얼마나 줄었는지를 뜻하며 작은 자식 노드와 큰 자식 노드를 같은 비중으로 평균하지 않습니다.
회귀에서는 목표값의 퍼짐이나 손실을 줄이는 방향으로 나눕니다. scikit-learn의 제곱 오차 기준은 잎에서 평균을, 절대 오차 기준은 중앙값을 사용합니다. 회귀 트리라면 언제나 평균만 출력한다고 외우기보다 어떤 손실 기준으로 학습했는지 확인하는 편이 정확합니다.
멈춤 조건을 만나면 잎을 남깁니다
분할을 반복하다가 최대 깊이, 최소 표본 수, 더 줄일 수 있는 불순도 같은 조건에 걸리면 그 노드를 잎으로 둡니다. 예측할 때는 새 입력 하나가 학습된 조건을 따라 잎 하나에 도착합니다. 일반적인 단일 트리는 모든 잎의 결과를 평균하지 않습니다.
분류 확률은 도착한 잎의 학습 사례에서 해당 클래스가 차지하는 비율입니다. 표본 가중치나 클래스 가중치를 사용했다면 가중된 비율로 해석합니다. 작은 잎에서 한 클래스만 남아 높은 확률이 나와도 새 사례가 반드시 맞는다는 보증으로 받아들이면 안 됩니다.
깊이와 주요 설정은 무엇을 뜻하나요?
max_depth와 min_samples_leaf
max_depth
는 트리의 최대 깊이를 제한합니다.
min_samples_leaf
는 분할 뒤 양쪽 잎 후보에 남아야 할 최소 표본 수를 정합니다. 잎에 극소수 사례만 남는 분기를 막으면 우연한 사례를 외우는 문제를 줄이는 데 도움이 됩니다. 너무 강하게 제한하면 필요한 차이도 놓칩니다.
min_samples_split
은 현재 노드를 나눠 볼 수 있는 최소 표본 수입니다. 분할 전 노드가 크더라도 한쪽 자식에 아주 적은 사례가 남을 수 있으므로 잎의 최소 크기와 역할이 다릅니다. 두 설정을 같은 뜻으로 바꿔 쓰지 않습니다.
criterion과 ccp_alpha
criterion
은 분할의 좋고 나쁨을 평가하는 기준입니다. 분류의 지니·엔트로피와 회귀의 제곱·절대 오차를 구분합니다.
ccp_alpha
는 비용-복잡도 가지치기의 강도에 관여하며 값을 크게 하면 일반적으로 더 많은 가지를 제거해 작은 트리를 남깁니다.
가지치기는 잎의 불순도와 잎 개수에 따른 복잡도 비용을 함께 비교합니다. 공식 예제의 최적 설정값을 다른 데이터에 그대로 적용하지 말고 검증 데이터에서 고릅니다. 최대 깊이로 성장을 제한하는 것과 자란 트리에서 가지를 줄이는 것은 서로 다른 복잡도 조절 방법입니다.
random_state와 재현성
같은 품질의 분할 후보가 여럿이면 선택이 달라질 수 있습니다. scikit-learn은 분기마다 특징 순서를 무작위로 섞으므로 최선의 분할을 고르는 설정에서도 난수 상태를 고정할 이유가 있습니다. 데이터 순서·전처리·라이브러리 버전까지 함께 기록해야 결과를 비교하기 쉽습니다.
결정 트리와 헷갈리는 용어는 무엇이 다른가요?
랜덤 포레스트와의 차이
결정 트리는 하나의 분기 구조로 예측하고 랜덤 포레스트는 무작위성을 넣어 학습한 여러 트리를 결합합니다. 단일 트리의 경로를 설명하는 일과 숲 전체의 결합 결과를 설명하는 일도 다릅니다. 자세한 결합 원리는 랜덤 포레스트 용어 설명에서 이어 볼 수 있습니다.
규칙 엔진과의 차이
규칙 엔진은 사람이 정한 정책이나 조건을 실행할 수 있습니다. 결정 트리 학습은 관측된 입력과 정답에서 조건을 찾습니다. 학습 결과를 조건문으로 내보낼 수는 있지만 데이터에 잘 맞는 분기라는 이유만으로 조직의 승인된 정책이나 법적 판단 기준이 되지는 않습니다.
계층적 클러스터링과의 차이
덴드로그램도 나무처럼 생겼지만 사례나 군집이 합쳐지는 관계를 보여 줍니다. 분류·회귀 트리는 정답을 예측하도록 입력 조건을 나눕니다. 가지 모양이 같아 보여도 군집의 병합 높이와 예측 모델의 분기 임계값은 의미가 다릅니다.
CART는 Classification and Regression Trees의 약어로 결정 트리를 만드는 대표 알고리즘 계열입니다. scikit-learn은 최적화한 CART 구현을 사용합니다. 결정 트리 전체가 반드시 CART만을 뜻하지는 않으며 ID3·C4.5 같은 다른 계열도 있습니다.
실전에서는 어디에 쓰이나요?
표 데이터의 분류·회귀 기준 모델
센서 특징으로 상태를 분류하거나 작업 기록으로 소요 시간을 예측할 때 비교 후보로 사용합니다. 단순한 트리부터 평가하면 복잡한 모델이 얼마나 더 나아지는지 판단하기 쉽습니다. 대상의 특성에 맞는 독립 평가와 오류 비용 확인이 먼저입니다.
입력과 예측 경로의 점검
트리를 그림이나 조건문으로 출력해 학습에서 사용한 특징을 검토합니다. 사후 처리 결과처럼 예측 시점에는 알 수 없는 값이 맨 위 분기에 등장한다면 데이터 누수를 의심할 수 있습니다. 읽기 쉬운 경로라도 실제 원인 관계를 증명하지는 않습니다.
결정 트리를 적용할 때 어떤 순서로 확인하나요?
1. 예측 시점과 정답을 정합니다. 입력을 언제 얻는지, 분류할 라벨이나 예측할 수치가 무엇인지 먼저 고정합니다. 같은 고객이나 장비의 기록이 반복된다면 독립 표본처럼 무작위로 섞어도 되는지 확인합니다. 미래에 생기는 결과를 입력에 넣지 않습니다.
2. 데이터 분리와 전처리를 함께 설계합니다. 학습·검증·최종 평가 데이터를 나누고 전처리 규칙은 학습 데이터로 맞춥니다. 기본 수치형 트리는 거리 기반 모델처럼 특징의 크기를 맞추는 스케일링이 보통 필요하지 않습니다. 그래도 범주형 값의 인코딩과 누락된 값의 처리 방침은 따로 정합니다.
3. 작은 트리에서 복잡도를 비교합니다. 깊이와 잎 크기를 제한한 모델부터 시작해 검증 성능을 봅니다. 가지치기 후보도 같은 평가 분할에서 비교합니다. 학습 점수만 계속 높아지고 검증 점수는 떨어진다면 더 복잡한 나무를 고를 이유가 약합니다.
4. 예측값과 경로를 함께 저장합니다. 분류라면 클래스별 오류와 확률을, 회귀라면 실제 단위의 오차를 확인합니다. 최종 평가 데이터는 설정 선택에 반복해서 쓰지 않습니다. 선택한 모델의 깊이·잎 수·입력 열 순서와 전처리까지 묶어 저장하면 배포 후 비교가 수월합니다.
실전 팁: 가장 보기 좋은 나무를 고르는 일과 새 데이터에서 가장 잘 맞는 나무를 고르는 일은 다릅니다. 설명 가능성과 검증 성능을 함께 비교하세요.
사용할 때 무엇을 주의해야 하나요?
작은 데이터 변화에도 구조가 달라질 수 있습니다. 학습 행 일부가 바뀌면 위쪽 분기부터 달라질 수 있습니다. 한 번의 그림만 보고 영구적인 업무 규칙을 발견했다고 단정하지 않습니다. 평가 분할을 바꿨을 때 성능과 주요 경로가 얼마나 유지되는지 확인합니다.
범주형·결측값 지원은 구현마다 다릅니다. 결정 트리 계열의 일반적 성질과 특정 라이브러리의 지원 범위를 구분합니다. scikit-learn의 이 구현은 범주형 변수를 직접 처리하지 않으므로 입력 표현을 준비해야 합니다. 결측값도 알고리즘과 설정 조합에 따라 지원 범위가 달라집니다.
불순도 기반 중요도는 인과 효과가 아닙니다. 선택 가능한 값이 많은 특징에 중요도가 치우칠 수 있습니다. 중요도가 높은 열을 바꾸면 결과가 그만큼 좋아진다는 뜻은 아니며 상관된 열끼리 역할을 나눠 가질 수도 있습니다. 별도 평가에서 특징의 유용성을 다시 확인합니다.
회귀의 외삽과 분류의 과신을 경계합니다. 기본 회귀 트리는 잎의 값으로 예측하므로 학습 범위 밖의 증가 추세를 자연스럽게 연장하지 못합니다. 분류 역시 특정 잎에서 높은 확률이 나왔다는 이유로 자동 결정을 확대하지 말고 새 데이터의 오류와 확률 신뢰도를 확인합니다.
주의: 분기 경로가 설명된다는 사실은 예측의 정확성·공정성·인과성을 보장하지 않습니다. 경로를 읽은 뒤 실제 오류와 적용 조건을 검증해야 합니다.
자주 묻는 질문
Q1. 결정 트리는 분류에만 쓰나요?
아닙니다. 클래스를 예측하는 분류 트리와 숫자를 예측하는 회귀 트리가 있습니다. 같은 분기 구조를 쓰더라도 분할 손실과 잎에서 반환하는 값이 다릅니다.
Q2. 트리가 깊을수록 더 좋은가요?
학습 데이터는 더 세밀하게 나눌 수 있지만 우연한 차이까지 외울 위험도 커집니다. 깊이를 늘렸을 때 독립 검증 성능이 실제로 나아지는지 확인하고 잎의 표본 수와 함께 비교합니다.
Q3. 표준화를 꼭 해야 하나요?
기본 수치형 결정 트리는 특징의 경계값으로 분기하므로 표준화가 보통 필수는 아닙니다. 다만 앞뒤 전처리나 함께 비교하는 다른 모델이 스케일링을 요구할 수 있고 범주형 인코딩은 별도 문제입니다.
Q4. 잎의 확률은 정답일 확률을 보장하나요?
잎에 모인 학습 사례의 클래스 비율을 뜻하며 가중치를 썼다면 그 영향도 반영합니다. 작은 잎의 높은 확신이 실제 정답률과 같다고 볼 수 없으므로 별도 데이터에서 확률을 평가합니다.
Q5. 가지치기와 신경망 프루닝은 같은 작업인가요?
둘 다 불필요한 부분을 줄인다는 생각은 공유합니다. 그러나 결정 트리의 가지치기는 하위 분기 구조를 줄이는 작업이고 신경망 프루닝은 가중치·채널 등의 일부를 제거하는 작업입니다. 대상과 평가 기준을 구분해야 합니다.
출처
마무리
결정 트리는 입력을 조건으로 나누고 잎에서 예측하는 모델입니다. 분기 기준은 정답 데이터에서 배우며 분류는 클래스 비율을, 회귀는 선택한 손실에 맞는 대표값을 사용합니다. 랜덤 포레스트처럼 여러 트리를 결합하는 방식과 단일 트리의 원리를 구분해 두면 관련 문서를 읽기 쉬워집니다.
처음에는 루트·분기·잎을 따라 예측 경로를 읽고 깊이·잎 크기·가지치기가 나무를 어떻게 바꾸는지 확인하세요. 읽기 쉬운 조건문이라도 좋은 예측 규칙인지는 별개입니다. 학습에 쓰지 않은 데이터의 오류와 실제 적용 조건까지 살펴야 모델을 제대로 평가할 수 있습니다.
