Introduction
결정트리 Decision Tree Classifier의 하이퍼파라미터들을 가볍게 정리해보자.
하이퍼파라미터
결정트리의 최대 단점인 과적합을 피하기 위해
하이퍼파라미터들은 결정트리의 분화를 방지하는 역할인 것들이 많다.
max_depth
트리의 최대 깊이. default값은 None.
None값일 경우, 완벽하게 클래스 결정값이 정해질 때까지 결정나무가 자랄 수 있다.
물론 max_depth가 None이어도 min_samples_split 설정값에 걸려 무한히 분할하기는 어렵다.
min_samples_split
노드를 분할하기 위한 최소 샘플 데이터 수. deault값 2.
즉 리프노드의 샘플 수가 최소 2는 되어야지 분할 가능하다는 뜻.
예를 들어, min_samples_split이 8로 설정되어 있을 때,
노드의 샘플 수가 7이면 분할하지 않는다.
의미가 헷갈릴 수도 있으니 명확하게 영어 정의를 적자면,
The minimum number of samples required to split an internal node.
아래 그림에서 빨간 점선 사각형의 리프들도 서로 다른 클래스값을 포함하고 있지만,
해당 리프의 샘플값이 min_samples_split 최소값을 충족시키지 못하기 때문에
분화하지 않는다.
max_features
사용할 최대 피쳐 개수.
디폴트는 None으로 모든 피쳐를 사용해 분할을 수행한다.
auto일 경우 전체 피쳐개수에 제곱근(sqrt)을 씌운 갯수만큼 사용한다.
min_samples_leaf
분할될 때 왼쪽 오른쪽 리프노드(자식노드들)에서 가져야 할 최소 샘플 데이터 수.
명확하게 하기 위해 다시 영어로 표기하면:
The minimum number of samples required to be at a leaf node.
역시 값이 커질수록 분할이 어려워진다.
아래 그림처럼 min_samples_leaf값이 4일 경우,
리프노드의 샘플 수가 4일 때 분화하지 않는다.
어떻게 분화하더라도 자식노드 둘중 하나는 min_samples_leaf 최소값을 만족시키지 못하기 때문.
get_params() 메소드
결정트리 객체의 get_params() 메소드를 호출하면
해당 객체의 세팅된 하이퍼파라미터들을 확인할 수 있다.
from sklearn.tree import DecisionTreeClassifier
dt = DecisionTreeClassifier(min_samples_split=7)
dt.get_params()
Conclusion
min_samples_split, min_samples_leaf 등 아리까리한 하이퍼파라미터들을 정리해보았다.
reference
파이썬 머신러닝 완벽 가이드 강의의 PPT를 사용했다.
'PL > Python' 카테고리의 다른 글
Ensemble learning 2: 배깅 Bagging, 랜덤 포레스트 (0) | 2022.12.16 |
---|---|
[코드 스터디] UCI-HAR 데이터셋3: 결정트리 적용 (0) | 2022.12.15 |
Ensemble learning 1: 앙상블 학습의 개념, 보팅 voting (0) | 2022.12.15 |
pandas value_counts() 사용법 (0) | 2022.12.09 |
데이터셋 분리: Validation (검증) 데이터셋은 무엇인가? (0) | 2022.12.08 |
댓글