머신러닝 (Machine Learning)/분류(Classification) 분석

결정 트리의 과적합 (Overfitting) 시각화로 이해하기

DS지니 2021. 2. 14. 17:43
728x90
반응형

결정트리의 과적합 문제를 시각화해 더 자세히 알아보겠습니다.

 

1. 사이킷런 make_classification 으로 분류의 표본 데이터 생성하기

- hyperparameter = defalt

# make_classification 분류를 위한 테스트용 데이터 만들기

from sklearn.datasets import make_classification
import matplotlib.pyplot as plt
%matplotlib inline

plt.title("3 Class values with 2 Features Sample data creation")

#2차원 시각화를 위해 피처는 2개, 클래스는 3가지 유형의 분류 샘플 데이터 생성.
X_features, y_labels = make_classification(n_features=2, n_redundant=0, n_informative=2,
                                           n_classes=3, n_clusters_per_class=1, random_state=0)

#그래프 형태로 2개의 피처로 2차원 좌표 시각화
plt.scatter(X_features[:,0], X_features[:,1], marker='o', c=y_labels, edgecolor='k');

 

2. Decision Boundary (결정 경계) 시각화

: 머신러닝 모델이 클래스 값을 예측하는 결정 기준을 색상과 경계로 나타내 모델이 어떻게 데이터 세트를 예측 분류하는지 잘 이해할 수 있게 해준다.

 

- hyperparameter = defalt

빨간 동그라미 = Outlier (이상치)

  • 일부 이상치 데이터까지 분류하기 위해 분할이 자주 일어나 결정 기준 경계가 매우 많아졌다. 
  • 결정트리의 기본(defalt) 하이퍼 파라미터 설정은 leaf node 안에 데이터가 모두 균일하거나 하나만 존재(min_samples_leaf=1) 해야 하는 엄격한 분할 기준으로 인해 결정 기준 경계가 많아지고 복잡해졌다.
  • 이렇게 복잡한 모델은 학습 데이터 세트의 특성과 약간만 다른 형태의 데이터 세트를 예측하면 예측 정확도가 떨어지게 된다. 이런 현상을 학습 데이터 세트에 과적합된 예측 모델 이라고 한다.

3. 하이퍼파라미터 조정 

 

- hyperparmaeter = min_samples_leaf 6

: 6개 이하의 데이터는 leaf node를 생성할 수 있도록 리프노드 생성 규칙 완화

  • 이상치에 크게 반응하지 않으면서 좀 더 일반화된 분류 규칙에 따라 분류됨.
  • 하이퍼파라미터 값이 defalt인 모델보다 예측 성능이 더 뛰어날 가능성이 높다.
  • 테스트 데이터 세트는 학습 데이터 세트와 다르기 때문에 학습 데이터에 지나치게 최적화된 분류기준은 오히려 테스트 데이터 세트에서 정확도를 떨어뜨릴 수 있다.

 


Decision Boundary Visualization 코드 링크

 

https://github.com/gggggeun/study/blob/main/2.%20%EB%B6%84%EB%A5%98(Classification)/4.%20%EA%B2%B0%EC%A0%95%ED%8A%B8%EB%A6%AC%EC%9D%98%20%EA%B3%BC%EC%A0%81%ED%95%A9(Overfitting)%20%EC%8B%9C%EA%B0%81%ED%99%94%EB%A1%9C%20%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0.ipynb

 

gggggeun/study

Contribute to gggggeun/study development by creating an account on GitHub.

github.com

 

728x90
반응형