키워드
- 사이킷런 파이프라인(pipelines)
- 사이킷런 결정트리(decision tree)
- 결정트리의 특성 중요도(feature importances)
- 결정트리 모델의 장점
결정트리
트리 형태로 데이터를 특성 기준 마다 boolean값으로 의사결정을 하여 최종 타겟값을 찾아가는 알고리즘
- 회귀와 분류 문제 모두 사용 가능
- 회귀 : 평균
- 최종 노드의 데이터를 평균을 내어 최종 타겟값을 도출
- 분류 : 최빈값
불순도
- 섞여있는 정도를 수치로 나타내는 것
- 불순도가 낮은 경우
- 지니불순도나 엔트로피는 낮은값을 갖게됩니다. → 결국 노드를 분할하는 시점에서 가장 비용함수를 줄이는 분할특성과 분할지점을 찾아 내는 프로세스가 필요합니다.
- 분할에 사용할 특성이나 분할지점(값)은 타겟변수를 가장 잘 구별해 주는(불순도의 감소가 최대가 되는, 정보획득이 가장 큰)것을 선택합니다.
- 특정한 특성을 사용해 분할했을 때 엔트로피의 감소량을 뜻합니다. IG(T,a)=H(T)−H(T|a) = 분할전 노드 불순도 - 분할 후 자식노드 들의 불순도
- 가장 우선적으로, 자주 사용
비용함수
- 지니불순도(0~0.5)
- 트리에 한 노드의 모든 샘플이 같은 클래스에 속해 있을 때, 값이 0이되고 이때 순수하다고 말합니다.
- 범주들이 섞여있을 수록 수치가 커집니다.
- 엔트로피(0~1)
- 한 노드에서 모든 샘플이 같은 클래스에 때 0이 됩니다.
하이퍼파라미터
- min_samples_split
- 노드를 분할하기 위한 최소한의 샘플 데이터 수
- 노드에서 분기를 만들기위해 최소한 얼마나 되는 샘플이 노드에 있는지 확인
- min_samples_leaf
- 말단 노드가 되기 위한 최소한의 샘플 데이터 수
- leaf노드에 최소한 몇개의 샘플이 존재하는지 설정
- max_depth
- max_features
- 최적의 분할을 위해서 고려할 최대 피처의 개수
- max_leaf_nodes
결정 트리에서의 Scaler가 의미 없는 이유
- 결정트리는 분할의 개념이기때문에 각 칼럼 별 단위를 맞출 필요가 없습니다.
- 자료의 형태에 상관없이 순위를 통해서만 분석에 영향을 주기때문에 이상치에 민감하지 않습니다.
- 결국 대소관계가 유지 되므로 scaler의 영향을 받지 않습니다.