반응형
머신러닝 모델 중 하나인 의사결정나무(Decision Tree)는 직관적이고 해석하기 쉬운 알고리즘으로 많이 사용됩니다. 특히, 시각화한 트리 구조는 모델이 어떻게 결정을 내리는지 한눈에 파악하기 쉽다는 장점을 가지고 있습니다.
하지만 의사결정나무 시각화를 처음 접하면, "이 복잡한 트리 구조를 어떻게 해석하지?" 라는 생각이 들 수도 있습니다. 그래서 오늘은 의사결정나무 시각화를 읽는 방법을 소개하려 합니다.
1. 의사결정나무 기본 구조
- 의사결정나무는 노드(Node)와 가지(Edge)로 구성되어 있습니다.
✅ 루트 노드 (Root Node)
- 트리의 가장 상단에 있는 노드로, 트리의 시작점입니다. 전체 데이터가 처음 분할되는 기준입니다.
✅ 내부 노드 (Internal Node) 혹은 결정 노드 (Decision Node)
- 데이터가 특정 기준으로 나뉘는 분기점입니다.
- 부모 노드에서 내려온 데이터를 특정 조건에 따라 두 개 이상의 자식 노드로 분할합니다.
- 각 노드마다 적혀 있는 분할 기준을 보고, 데이터가 어떻게 나뉘어졌는지 확인이 가능합니다.
✅ 리프 노드 (Leaf Node)
- 트리의 가장 하단에 있는 노드이자, 최종적인 예측 값이 표시되는 노드입니다.
- 더 이상 분할되지 않으며, 모델의 최종 결론을 나타냅니다.
2. 의사결정나무 시각화
- 먼저 의사결정나무를 시각화한 자료를 불러오겠습니다. 시각화하는 방법은 아래의 자료에서 확인할 수 있습니다.
2025.03.08 - [데이터 분석 관련] - 쉽게 배우는 의사결정나무(Decision Tree) - 주피터 노트북으로 개념부터 실습까지!
쉽게 배우는 의사결정나무(Decision Tree) - 주피터 노트북으로 개념부터 실습까지!
1. 의사결정나무(Decision Tree)란?의사결정나무는 머신러닝에서 자주 사용되는 알고리즘으로, 데이터를 분류하거나 회귀 분석을 할 때 활용됩니다.마치 스무고개처럼 질문을 던지고 데이터를 분류
cjangela.tistory.com
# 데이터 시각화
plt.figure(figsize = (6, 7))
plot_tree(dt, max_depth = 3, filled = True, feature_names = iris.feature_names)
plt.show()
3. 의사결정나무 시각화에서 확인해야 할 요소
- 의사결정나무 시각화를 해석하기 위해 확인해야 할 요소는 총 3가지가 있습니다.
- 위의 시각화 자료와 비교하면서 확인해보시는 것이 좋습니다.
1) 분할 기준 (Split Criterion)
- 각 노드는 특정 변수(Feature)를 기준으로 데이터를 나눕니다.
- 루트 노드는 petal width(cm)가 0.75 이하인지를 질문합니다. 이때, 각 데이터의 샘플이 0.75 이하이면 왼쪽 노드로 이동하고, 그렇지 않으면 오른쪽 노드로 이동합니다.
- 이러한 방법으로 계속해서 데이터를 두 그룹으로 나누는 방식입니다.
2) 지니 불순도 (Gini Impurity)
- 지니 불순도는 각 노드에서 데이터가 얼마나 순수한지(= 한쪽으로 치우쳐 있는지)를 나타내는 값입니다.
- 지니 불순도를 크게 낮출 수 있는 방법으로 질문을 하며, 값이 0이 되면 해당 노드는 하나의 클래스만 존재함을 의미합니다.
- 즉, 루트 노드에서 왼쪽 노드를 확인해보면 지니 불순도가 0인 것을 확인할 수 있고 자녀 노드가 없는 것을 확인할 수 있습니다. 반면, 오른쪽 노드의 지니 불순도는 0.5이므로 어느 정도 섞여 있는 상태임을 확인할 수 있으며, 자식 노드로 갈수록 지니 불순도가 감소하는 것을 확인할 수 있습니다.
3) 샘플 수 (Samples)
- 각 노드에 속하는 데이터 개수를 의미합니다. 샘플 수가 클수록 해당 노드의 대표성이 크다고 볼 수 있습니다.
- 루트 노드에서 왼쪽 노드의 샘플 수는 40개, 오른쪽 노드의 샘플 수는 80개임을 확인할 수 있습니다.
4) 클래스 분포 (Class Distribution)
- 각 노드에서 각 클래스가 얼마나 포함되어 있는지를 보여줍니다.
- 루트 노드의 오른쪽 노드를 보면, 샘플수는 80개이고 value는 0, 40, 40으로 나타납니다. 해당 데이터의 클래스는 0, 1, 2로 총 3개입니다. 따라서 1번과 2번의 클래스가 각 40개씩 있음을 보여줍니다.
- 루트 노드의 왼쪽 노드를 보면, 샘플 수는 40개이고, value는 40, 0, 0으로 나타납니다. 이때는 0번 클래스가 40개가 있으므로 0번 클래스로 예측할 수 있다는 것을 의미합니다.
4. 의사결정나무 시각화 해석하는 방법
- 의사결정나무를 시각화하는 순서를 간단하게 정리해보겠습니다.
1. 위에서 아래로 내려가며 읽기 (루트 노드 → 리프 노드)
2. 각 노드의 분할 기준을 보고 데이터가 어떻게 나뉘는지 확인하기
3. 지니 불순도를 통해 노드의 순도를 파악하기
4. 샘플 수가 적은 노드는 신뢰도 낮으므로 각 노드별 샘플 수 확인하기
5. 리프 노드의 클래스 분포를 보고 예측 결과 확인하기
의사결정나무는 데이터의 흐름을 트리 구조로 시각화해서 보여주기에, 모델이 어떻게 학습을 했는지 한 눈에 파악하기 쉽습니다. 비전문가와도 쉽게 공유할 수 있는 모델이라는 점에서 강력한 장점을 가지고 있는 모델이기도 하지요.
앞으로 의사결정나무를 활용할 때, 시각화를 적극적으로 이용하여 모델을 분석해보시면 좋을 듯 합니다. 감사합니다:-)
'데이터 분석 관련' 카테고리의 다른 글
단층신경망(Single-Layer Perceptron)이란? 개념부터 실습까지! (0) | 2025.03.30 |
---|---|
쉽게 배우는 의사결정나무(Decision Tree) - 주피터 노트북으로 개념부터 실습까지! (1) | 2025.03.08 |
파이썬: mutable과 immutable 구분하기 / PyCharm 활용 (0) | 2025.03.05 |
[통계 개념] 정규분포, 첨도와 왜도 알아보기 (0) | 2025.02.25 |
pandas(6) : 날짜 데이터 변환 및 변환 오류 / 주피터노트북 (0) | 2025.02.19 |