본문 바로가기
Data Analytics with python/[Machine Learning ]

[Classification] Decision Tree

by 보끔밥0130 2023. 2. 15.
728x90

결정 트리

 

데이터에 있는 규칙을 학습을 통해 자동으로 찾아내 트리 기반의 분류 규칙을 만듭니다.

 규칙이 많아질수록 분류를 결정하는 방식이 더욱 복잡해지고 곧 과적합으로 이어집니다.

결정 트리 구조

● Root Node : 뿌리의 시작점
● Decision Node : 규칙 조건
●  Leaf Node : 결정된 클래스 값
● Sub Tree : 규칙 노드(Decision Node)기반으로 분할되는 작은 트리

결정 노드의 규칙 조건

● 정보 균일도가 높은 데이터 세트를 먼저 선택합니다.
●  정보의 균일도를 측정하는 대표적인 방법은 엔트로피를 이용한 정보 이득 지수와 지니 계수가 있습니다.
●  정보이득이 높은 속성을 기준으로 분할하거나 지니 계수가 낮은 속성을 기준으로 분할합니다.
 

정보 이득


정보 이득은 1 - 엔트로피

엔트로피는 주어진 데이터 집합의 혼잡도를 의미합니다.
 
엔트로피가 높다면 서로 다른 값이 섞여있다는 의미이고 엔트로피가 낮다면 같은 값이 섞여 있다는 의미입니다.
 
정보 이득이 높은 속성을 기준으로 분할합니다.
 

결정 트리 시각화

https://www.graphviz.org/

 

Graphviz

Graph Visualization Software

graphviz.org

 

- 추가적인 환경 설정

환경 변수 설정 : 시스템 환경 변수 편집 > 고급 > 환경 변수  클릭

사용자 변수 path 값 : C:\Program Files\Graphviz\bin

시스템 변수 path 값 : C:\Program Files\Graphviz\bin\dot.exe

 

- graphviz

from sklearn.tree import DecisionTreeClassifier
from sklearn.tree import export_graphviz

# DecisionTreeClassifier
clf = DecisionTreeClassifier(random_state = 156)
clf.fit(X_train, y_train)

# export_graphviz()의 호출 결과로 out_file로 지정된 tree.dot파일을 생성
export_graphviz(clf, out_file = "tree.dot", impurity = True, filled=True)

import graphviz

# 위에서 생성된 tree.dot파일을 graphviz가 읽어서 시각화
with open("tree.dot") as f:
	dot_graph = f.read()
graphviz.Source(dot_graph)

중요한 역할 지표 - .feature_importances_

 

 

728x90

댓글