IT & 개발공부/파이썬(Python)

머신러닝 코드 실습 - 결정트리 & 과적합

규딩코딩 2023. 8. 22. 17:36

2023.08.21 - [IT & 개발공부/파이썬(Python)] - 머신러닝 알고리즘(선형회귀, 결정트리 등) 이해하기

 

머신러닝 알고리즘(선형회귀, 결정트리 등) 이해하기

- 이번 글에서는 다양한 머신러닝 알고리즘 중 몇가지들을 배워보도록 하겠다. 1. 선형회귀 더보기 * 회귀분석이란 - 일단 회귀분석을 왜 하는지 알아야 앞으로 내용들도 섞이지 않을 것이다. 회

bmil2011s.tistory.com

 

- 이전 글에 이어서 머신러닝 알고리즘을 실제 코드로 작성해가며 배워보도록 하겠다. 특히 이번 글에서는 결정트리 모델에 대한 코드 실습을 수행할 예정이다.

 

1. 모델 학습시키기

- 설정한대로 잘 학습된것으로 보인다.

2. Graphviz 시각화

-사이킷런의 트리 모듈은 Graphviz를 이용하기 위해 export_graphviz( ) 함수를 제공한다. 해당 함수는 Graphviz가 읽어 들여서 그래프 형태로 시각화할 수 있는 출력 파일을 생성한다. 해당 인자로 학습이 완료된 estimator, ouput 파일 명, 결정 클래스 명칭, 피처 이름을 다음과 같이 입력해주면 된다.

 

- 이렇게 생성된 출력파일을 다음과 같이 Graphviz가 읽어들여 시각적으로 표현할 수 있다.

 

3. 피처 중요도 파악하기

- 물론 시각화에서 보다시피 petal length 와 petal width 가 분류모형에서는 중요한 피처라는 것을 짐작할 수 있다. 하지만 좀 더 정확하고 수치적으로 중요한 피처를 알아볼 수 있는 좋은 메서드가 DecisionTreeClassifier에 제공된다.

- 다음과 같이 feature_importances_ 메서드를 사용하여, 중요한 피처를 파악하고 시각화할 수 있다.

 

4. 결정트리 과적합(Overfitting)

- 결정트리 과적합이란 모델이 학습 데이터에만 과도하게 최적화되어 실제 예측을 다른 데이터로 수행할 경우에는 예측 성능이 떨어지는 경우를 말한다. 

- 결정트리가 어떻게 학습 데이터를 분할하여 예측을 수행하는지, 이로 인한 과적합 문제를 시각화해보도록 하자.

 

4-1 데이터 샘플 만들기(make_classification)

* make_classification

더보기

make_classification은 Scikit-learn 라이브러리에서 제공하는 함수 중 하나로, 무작위로 분류 문제에 사용할 가상의 데이터셋을 생성하는 함수로, 이 함수를 사용하면 특정한 특징과 클래스 수를 가진 데이터셋을 만들 수 있다. 이를 활용하여 분류 모델을 테스트하거나 시각화하는 데 유용하다.

 

주요 매개변수

n_samples: 생성할 샘플의 총 개수

n_features: 생성할 피처(특징)의 개수

n_informative: 클래스를 구분하는데 유용한 특징의 개수

n_redundant: 다른 특징들로부터 생성된 불필요한 특징의 개수

n_classes: 생성할 클래스의 수

random_state: 무작위 생성을 위한 시드 값

 

4-2 모델 분류 시각화하기(visualize_boundary)

- 결정트리모델이 어떠한 결정 기준을 가지고 분할하면서 데이터를 분류하는지 visualize_boundary라는 별도의 함수를 사용하여 시각화를 진행해보자.

- 다음은 해당 함수 소스 코드이다.

 

- 일부 이상치 데이터까지 분류하기 위해 분할이 자주 일어나 결정 기준 경계가 매우 많아졌다.

- 결정 트리의 기본 하이퍼 파라미터 설정은 리프 노드 안에 데이터가 모두 균일하거나 하나만 존재해야하는 엄격한 분할기준으로 인해 결정 기준 경계가 많아진 것이다.

 

4-3 과적합 해결

- 과적합된 모델을 해결하는 방법은 여러가지가 있으나, 그중에서도 min_samples_leaf 설정값을 변경하는 방법을 사용해보겠다.

- 다음과 같이 min_samples_leaf 값을 설정해줌으로써 이상치에 크게 반응하지 않으면서 좀 더 일반화된 분류 규칙에 따라 분류됨을 확인할 수 있다.

 

 

 

 

 

이 글은 파이썬 머신러닝 완벽 가이드 개정 2판(권철민, 2022)을 일부 참고하여 작성하였습니다.

반응형