728x90
반응형
반응형
🎯 1. Decision Tree란?
- *Decision Tree(의사결정 나무)**는 데이터의 특성을 기반으로 분류(Classification) 또는 회귀(Regression) 문제를 해결하는 지도 학습(Supervised Learning) 알고리즘입니다.
- 데이터의 속성을 기준으로 질문을 던지고, 답변에 따라 데이터를 분류하는 방식으로 작동합니다.
- 사람이 의사 결정을 내리는 방식과 유사하기 때문에 직관적이고 이해하기 쉬운 모델입니다.
🎯 2. Decision Tree의 구조
- Root Node (루트 노드) : 트리의 시작점 (전체 데이터)
- Internal Node (내부 노드) : 데이터를 분기하는 기준
- Leaf Node (리프 노드) : 최종 분류된 결과
✅ 예제 (트리 구조 예시)
아래 예시는 날씨 정보를 기반으로 운동을 할지 말지를 결정하는 Decision Tree입니다.
날씨?
├── 맑음 → 운동 O
├── 흐림 → 운동 X
├── 비 → 기온?
├── 따뜻함 → 운동 O
├── 추움 → 운동 X
📌 이처럼 Decision Tree는 데이터를 나누면서 점점 구체적인 결론을 도출합니다.
🎯 3. Decision Tree의 작동 원리
- 데이터를 분석하여 가장 좋은 질문(특성)을 찾음
- Entropy(엔트로피) 또는 **Gini Index(지니 계수)**를 사용하여 데이터를 가장 잘 구분하는 기준을 찾음
- 데이터를 분할(Split)하여 하위 노드를 생성
- 최적의 분류 기준을 반복적으로 적용
- 리프 노드(더 이상 분할할 수 없는 상태)에서 최종 분류 완료
📌 즉, Decision Tree는 가장 효과적인 분류 기준을 찾아 점진적으로 데이터를 분리하는 방식으로 학습합니다.
🎯 4. Decision Tree 모델 생성하기 (Python 실습)
✅ 데이터 불러오기 및 전처리
# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn import metrics
# 샘플 데이터 생성
df = pd.read_csv('../data/Social_Network_Ads.csv')
df
# 결측치확인
df.isna().sum()
# 데이터 분할
X = df.loc[ : ,'Age' : 'EstimatedSalary']
y = df['Purchased']
#형태 변환
scaler_X = StandardScaler()
X = scaler_X.fit_transform( X )
X_train, X_test, y_train, y_test = train_test_split(X, y ,test_size = 0.2, random_state = 27)
✅ Decision Tree 모델 학습 및 예측
# Decision Tree 모델 생성
classifier = DecisionTreeClassifier(random_state = 27)
classifier.fit(X_train, y_train)
# 예측
y_pred = classifier.predict(X_test)
# 정확도 평가
confusion_matrix(y_test,y_pred)
accuracy_score(y_test,y_pred)
✅ Decision Tree 시각화
import matplotlib.pyplot as plt
from sklearn.tree import plot_tree
plt.figure(figsize=(10, 6))
plot_tree(classifier, feature_names=['Age', 'EstimatedSalary'], class_names=['PurchasedX', 'PurchasedO'], filled=True)
plt.show()
📌 위 코드를 실행하면, Decision Tree 구조가 시각적으로 표현됩니다!
🎯 5. Decision Tree의 장점과 단점
🔹 장점
✅ 이해하기 쉽고 직관적
✅ 데이터 전처리(Scaling, 정규화)가 거의 필요 없음
✅ 데이터의 패턴을 설명하는 데 용이 (화이트 박스 모델)
✅ 중요한 변수를 자동으로 선택 가능
🔹 단점
❌ 과적합(Overfitting)이 발생하기 쉬움
❌ 데이터의 작은 변화에도 모델이 민감하게 반응
❌ 회전에 민감 (데이터가 기울어진 형태일 경우 성능 저하)
📌 랜덤 포레스트(Random Forest)는 이러한 단점을 보완하기 위해 개발됨!
(아래에서 Random Forest와의 차이를 살펴보겠습니다.)
🎯 6. Decision Tree vs. Random Forest
구 분 | Decision Tree | Random Forest |
모델 구조 | 단일 트리 | 다수의 트리(앙상블) |
복잡성 | 단순 | 복잡하지만 높은 성능 |
과적합 | 과적합 위험 높음 | 과적합 방지 가능 |
데이터 변화 | 민감 | 비교적 안정적 |
예측 방식 | 하나의 트리 결과 | 여러 트리의 다수결 투표 |
📌 Random Forest는 여러 개의 Decision Tree를 조합하여 더 강력하고 안정적인 성능을 제공합니다!
🎯 7. Decision Tree 실전 응용 사례
- 스팸 메일 분류 (이메일이 스팸인지 아닌지 판별)
- 대출 승인 여부 예측 (고객의 신용 정보를 기반으로 대출 승인 여부 결정)
- 질병 진단 (환자의 증상 데이터를 분석하여 질병 예측)
- 온라인 쇼핑 추천 시스템 (사용자의 구매 이력을 기반으로 상품 추천)
728x90
반응형