사이킷런 결정 트리 파라미터
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 패키지를 사용하는 것.
사이킷런은 Graphviz 패키지와 쉽게 인터페이스할 수 있도록 export_graphviz() API를 제공한다. 사이킷런의 export_graphviz()는 함수 인자로 학습이 완료된 Estimator, 피처의 이름 리스트, 레이블 이름 리스트를 입력하면 학습된 결정 트리 규칙을 실제 트리 형태로 시각화해 보여준다.
Graphviz는 C++로 운영 체제에 포팅된 패키지 이므로 파이썬 기반의 모듈과 인터페이스해주기 위해서는 먼저
Graphviz를 설치한 뒤에 파이썬과 인터페이스 할 수 있는 파이썬 래퍼(Wrapper) 모듈을 별도로 설치해야 한다.
'머신러닝 딥러닝' 카테고리의 다른 글
생성형 AI 기술 개발 및 활용 - 2 (0) | 2023.08.04 |
---|---|
생성형 AI 기술 개발 및 활용 - 1 (0) | 2023.08.04 |
GAN기초, 비용함수 (0) | 2023.08.02 |
사이킷런 내장된 예제 데이터 세트 (0) | 2023.06.28 |
사이킷런의 주요 모듈 (0) | 2023.06.28 |