의사결정트리
의사결정트리 (Decision Tree)
기본적으로 ChatGPT를 이용하여 틀을 잡고 만들어갈 것이며, 하나씩 해결해나가는 느낌으로 ML을 복습 및 검토한다.
의사결정트리 정의
- 분류(Classification)와 회귀(Regression) 모두에 사용되는 지도학습(Supervised Learning) 알고리즘 중 하나로, 주어진 데이터를 바탕으로 각 데이터의 속성값들을 특정 규칙에 따라 분류하거나 예측하는 모델입니다.
- 분류(Classification) 문제에서 주로 사용
- 예를 들어
- 스팸 메일 필터링에서 “스팸” 또는 “스팸이 아님”으로 분류
- 환자의 건강 상태를 “양성” 또는 “음성”으로 분류하는 등의 문제에 적용
- 예를 들어
- 데이터를 여러 조건으로 분류하고, 이를 통해 최종 결과를 도출
- 분류 과정에서 각 조건의 가중치나 중요도를 계산하여
- 각 조건의 중요도를 파악
- 모델의 설명력이 높다는 장점
- 모델의 결과를 해석하기 쉽고
- 입력 변수의 중요도를 알 수 있어서
- 과적합(Overfitting)의 문제가 발생
- 방지하기 위해 가지치기(Pruning) 등의 방법을 사용
의사결정트리 알고리즘 동작 순서
- 데이터셋 분할
- 입력 데이터를 속성값에 따라 여러 개의 부분 집합으로 나눕니다.
- 속성 선택
- 분할된 부분 집합들 중에서 정보 이득(information gain)이 가장 큰 속성을 선택합니다.
- 정보 이득은 분할 전과 후의 엔트로피 차이를 나타내는 지표입니다.
- 의사결정노드 생성
- 선택된 속성을 기준으로 의사결정 노드(decision node) 를 생성합니다.
- 하위 트리 생성
- 선택된 속성값에 따라 의사결정 노드 아래에 하위 트리를 생성합니다.
- 재귀적으로 반복
- 생성된 하위 트리에 대해서도 위 과정을 반복합니다.
- 트리의 최상위 루트 노드에서부터 가장 하위 노드까지 도달할 때까지 위 과정을 반복합니다.
분류 의사결정트리
데이터의 특징을 기반으로 하나의 규칙 세트를 만들어내는 것
즉, 특정 특징들을 분석하여 특정 규칙을 찾아내고 그 규칙에 따라 데이터를 분류
- 데이터셋에서 가장 중요한 특징을 선택합니다. 이를 기준 특징이라고 부릅니다.
- 기준 특징을 기반으로 하위 데이터셋으로 데이터를 분할합니다.
- 분할된 하위 데이터셋에서 가장 중요한 특징을 선택합니다. 이를 기준 특징으로 새로운 가지(branch)를 생성합니다.
- 이러한 분할과 가지 생성을 재귀적으로 반복합니다. 즉, 하위 데이터셋에서 더 이상 분할할 수 없을 때까지 분할을 수행합니다.
- 분할된 데이터셋의 각 영역은 하나의 클래스에 할당됩니다.
- 마지막으로, 새로운 데이터가 들어올 때, 분류하기 위해 의사결정트리를 따라가며 최종적으로 해당 데이터가 속한 클래스를 결정합니다.
- 의사결정트리 분류 알고리즘은 분할하기 위한 최상의 특징을 선택
- 각 분할에서 최상의 특징을 다시 선택
- 데이터가 특정 클래스에 속할 확률을 계산하는 방식으로 작동
- 이를 통해 모델은 분류하기 위해 데이터의 특징을 잘 파악하여, 클래스를 예측하기 위한 최상의 규칙을 생성합니다.