본문 바로가기
머신러닝/개념익히기

ML 결정 트리 모델 시각화 Graphviz

by ADELA_J 2023. 11. 28.

결정 트리 알고리즘이 어떤 규칙으로 트리를 생성하는지 보여주는

Graphviz 패키지.

▶ scikit-learn에서 쉽게 인터페이스 할 수 있게 export_graphviz( ) API 제공

▷ 학습이 완료된 Estimator, 피처 이름 리스트, 레이블 이름 리스트 입력하면

학습된 결정 트리 규칙을 시각화함

→ 파이썬으로 개발된 패키지가 아니라서 😂 설치한 후에 파이썬 래퍼(Wrapper) 모듈을 별도로 설치해야함

 

1. Graphviz에서 본인 컴퓨터 스펙에 맞는 파일을 설치함

https://graphviz.org/download/

 

Download

Graph Visualization Software

graphviz.org

 

2. 설치할때 로컬PC의 시스템 PATH 변수를 설정

 

2-1. PATH 변수가 제대로 설치됐는지 확인 하기 위해

내 PC > 속성 > 고급시스템 설정 > 환경 변수 > 시스템 변수 > 변수 : Path

여기에 Graphviz 가 포함되어 있어야한다 \bin 까지 포함해서

(없다면 추가해야함)

 

3.  터미널을 열어서 pip install graphviz 명령어로 설치하면 된다.

 

<실행해보자!>

 

붓꽃 데이터 세트를 활용해 어떻게 만들어지는지 확인하기 위해 데이터 불러오고 학습까지

 

그리고 export_graphviz()도 작성. 학습이 완료된 estimator, output 파일명,

결정 클래스의 이름, 피처의 이름을 작성해주기

 

모델 적어주고(dt), out_file = 저장파일 유무, default는 none.

class_name = 변수의 값 이름 설정, feature_names = 컬럼 이름들 지정

impurity = 균일도. 지니계수(불평등 지수 나타낼 때 쓰는 계수, 낮을수록 균일)를 나타내는지에 대한 여부, default는 true ,

filled = True로 하면 노드의 클래스가 구분되도록 색이 칠해짐

 

그리고 그래프 그려놓은걸 불러오기

 

(주피터 노트북에서 한다면 graph라는 변수에 따로 저장하지 않아도 됨)

 

그렇게 그려진 붓꽃데이터 결정트리분류모델 시각화!

▶ 트리의 branch 노드랑 말단 leaf 노드가 어떻게 구성되는지 한 번에 볼 수 있다.

▷ leaf 노드 = 더이상 자식 노드가 없는 노드, 최종 레이블 값이 결정되는 노드.

오직 하나의 클래스(레이블) 값으로 최종 데이터가 구성되거나

될 수 있는 하이퍼 파라미터 조건을 충족시키면 됨

▷ branch 노드 = 자식 노드가 있는 노드. 자식 노드를 만들기 위해 분할 규칙 조건을 가지고 있음.

petal length : 피처의 조건이 있는 것은 자식 노드를 만들기 위한 규칙 조건, 없으면 leaft 노드.

True/False로 다음 노드가 만들어짐

gini : 지니 계수

samples : 현 규칙에 해당되는 데이터 건수

value : 클래스 값 기반의 데이터 건수. 여기서는 0,1,2로 되어 있음. 순서대로 0,1,2 를 나타냄

 

▶ 각 노드의 색깔은 레이블 값을 의미함, 색이 짙을 수록 지니계수가 낮고 해당 레이블에 속하는 샘플 데이터가 많다는 것

 

 

▶ ▶ ▶ ▶이렇게 Graphviz를 이용하면 결정 트리 알고리즘의 규칙 생성 트리를 시각적으로 이해할 수 있음.