사이킷런 결정 트리 파라미터

2023. 7. 22. 16:10머신러닝 딥러닝

 

결정 트리 파라미터

파라미터 명 설명
min_samples_split - 노드를 분할하기 위한 최소한의 샘플 데이터 수로 과적합을 제어하는 데 사용됨.

- 디폴트는 2이고 작게 설정할수록 분할되는 노드가 많아져서 과적합 가능성 증가
min_samples_leaf - 분할이 될 경우 왼쪽과 오른쪽의 브랜치 노드에서 가져야 할 최소한의 샘플 데이터 수

- 큰 값으로 설정될수록, 분할될 경우 왼쪽과 오른쪽의 브랜치 노드에서 가져야 할 최소한의

샘플 데이터 수 조건을 만족시키기가 어려우므로 노드 분할을 상대적으로 덜 수행함.

- min_samples_split와 유사하게 과적합 제어 용도. 그러나 비대칭적(imbalanced) 데이터의

경우 특정 클래스의 데이터가 극도로 작을 수 있으므로 이 경우는 작게 설정 필요.
max_features  - 최적의 분할을 위해 고려할 최대 피처 개수.

디폴트는 None으로 데이터 세트의 모든 피처를 사용해 분할 수행.

- int  형으로 지정하면 대상 피처의 개수. float형으로 지정하면

전체 피처 중 대상 피처의 퍼센트임

- 'sqrt'는 전체 피처 중 sqrt(전체 피처 개수)

- 'auto'로 지정하면 sqrt와 동일

- 'log'는 전체 피처 중 log2(전체 피처 개수) 선정

- 'None'은 전체 피처 선정 

max_depth - 트리의 최대 깊이를 규정.

- 디폴트는 None. None으로 설정하면 완벽하게 클래스 결정 값이 될 때까지 깊이를

계속 키우며 분할하거나 노드가 가지는 데이터 개수가 min_samples_split보다

작아질 때까지 계속 깊이를 증가시킴.

- 깊이가 깊어지면 min_sampleds_split 설정대로 최대 분할하며 과적합할 수 있으므로

적절한 값으로 제어 필요.
max_leaf_nodes - 말단 노드(Leaf)의 최대 개수

 

 

결정 트리 모델의 시각화

결정 트리 알고리즘이 어떠한 규칙을 가지고 트리를 생성하는지 시각적으로 보여줄 수 있는 방법은

Graphviz 패키지를 사용하는 것.

https://www.graphviz.org

사이킷런은 Graphviz 패키지와 쉽게 인터페이스할 수 있도록 export_graphviz() API를 제공한다. 사이킷런의 export_graphviz()는 함수 인자로 학습이 완료된 Estimator, 피처의 이름 리스트, 레이블 이름 리스트를 입력하면 학습된 결정 트리 규칙을 실제 트리 형태로 시각화해 보여준다. 

 

Graphviz는 C++로 운영 체제에 포팅된 패키지 이므로 파이썬 기반의 모듈과 인터페이스해주기 위해서는 먼저

Graphviz를 설치한 뒤에 파이썬과 인터페이스 할 수 있는 파이썬 래퍼(Wrapper) 모듈을 별도로 설치해야 한다.