목차
1. 의사결정트리란 (분류 예측 모델)
[1] 의사결정트리란
데이터들이 가진 속성들로부터 분할 기준 속성을 판별하고,
분할 기준 속성에 따라 트리 형태로 모델링하는 분류 예측 모델
예를 들어, 질문을 던져서 대상을 좁혀나가는 스무고개 놀이와 비슷하다!
[2] 의사결정트리의 특징
의사결정트리는 일련의 질문을 통해 타깃 범주를 예측할 수 있다.
이 모델은 (일부 구현에서) 수치형이 아닌 데이터를 지원하고, 데이터 준비 과정이 비교적 단순하며,
비선형적 관계를 처리할 수 있을 뿐만 아니라, 특징들의 중요도를 얻고 해석이 쉽다는 장점을 가진다.
[3] 의사결정트리는 어떻게 만들어지는가?
1. 정보획득량이 높은 컬럼을 선별
2. 물어보면서 자식노드로 내려올때 데이터의 분류가 점점 명확해져야 되므로 부모노드 때 보다 자식 노드때의 데이터가 더 불순도(entropy) 가 낮아져야한다.
점점 순도가 높아지겠금 가지를 따라 내려오면 데이터를 분류하는 것이다.
이때 가장 중요한 질문을 처음에 해야 빨리 정답을 맞출 수 있다.
그 질문의 우선순위를 정할 때 필요한게 엔트로피(entropy)이다.
그럼 엔트로피와 정보획득량에 대해 자세히 알아보자.
2. 엔트로피
[1] 엔트로피란?
엔트로피는 불확실성의 정도이다.
여기서는 확률이 0.5일때 엔트로피가 1로 가장 높다.
왜냐하면 엔트로피는 불확실성의 정도이므로!
그래서 확률이 0이거나 1이면 엔트로피가 0이다.
[2] -1 . 엔트로피 구해보기 1
엔트로피 공식
박스의 엔트로피를 구해보면 전체 16개 가운데 빨간색 동그라미 (범주(k)=1) 은 10개,
파란색(범주(k)=2) 은 6개이다.
그럼 A 영역의 엔트로피는 ?
[2] -2 . 엔트로피 구해보기 2
이번에는 아래와 같이 분할한 상태에서의 불순도를 각각 구해보겠습니다.
3. 정보획득량
정보획득량이란?
분할 전 엔트로피 - 분할 후 엔트로피
그럼 위의 예시에서 정보획득량은? 0.95 -0.75 = 0.2 이다.
4 . 의사결정트리 알고리즘
의사결정 생성에 사용되는 디폴트 알고리즘은 분류 회귀 트리 (Classification And Regression Tree, CART)fh,
지니 불순도/지수로 결정을 내린다.
각 특징들을 반복적으로 접근하여 잘못된 분류에 대한 가장 낮은 확률값을 도출하는 특징 값을 찾는다.
디폴트 값을 사용하면 끝까지 자라난 트리(과적합)가 만들어지는데 이때
max_depth, cross-validation 과 같은 메커니즘을 통해 이를 제어할 수 있다.
결과의 해석
디시전 트리를 따라 내려가면서 선택된 결정을 확인할 수 있다.
계단식으로 이루어졌기 때문에 디시전 트리는 선형적 관계를 잘 다루지 못한다.(값이 약간만 변해도 전혀 다른 경로를 타고 내려갈 수 있다)
또한 학습용 데이터셋에 대한 의존도가 높기 때문에 데이터가 약간만 바뀌어도 트리 전체가 바뀌는 결과를 초래한다.
아래는 사이킷런 라이브러리를 사용한 디시전 트리 파이썬 코드
# 모델 생성
from sklearn.tree import DecisionTreeClassifier
model=DecisionTreeClassifier(criterion='entropy', max_depth=5)
# 모델 훈련
model.fit(x_train,y_train)
# 훈련된 모델로 데스트 데이터 예측하기
result= model.predict(x_test)
result
# 모델 평가
from sklearn.metrics import accuracy_score
accuracy=accuracy_score(y_test,result)
accuracy
# 이원교차표
from sklearn.metrics import confusion_matrix
tn,fp,fn,tp = confusion_matrix(y_test, result).ravel()
'머신러닝' 카테고리의 다른 글
나이브 베이즈란 (2) | 2022.10.15 |
---|---|
KNN 알고리즘 (3) | 2022.10.08 |
머신러닝과 딥러닝 알고리즘 (1) | 2022.10.08 |
인공지능, 머신러닝, 딥러닝 개념 (0) | 2022.10.08 |