본문 바로가기

Machine Learning/분류(Classification)

Classification - DecisionTreeClassifier

반응형

 

[DecisionTreeClassifier]

각 영역의 복잡도가 낮은 기준점으로 잘라(분기) 트리 형태의 구조로 분류하는 모델

Greedy한 알고리즘 :
분기를 한번 하면 최적의 트리 형태가 발견되더라도 되돌려서 재분기하지 않음
최적의 트리 생성을 보장하지 않기에 속도가 빠름




[파라미터]

- max_depth : 생성할 DecisionTree의 깊이 (int)

- max_features : DT가 사용하는 feature의 수 (float)

- min_samples_split : 구간의 데이터 수가 N개 미만이면 더이상 분기하지 않음 (int)
과적합 방지

- max_leaf_nodes : 리프 노드에서 최대로 가지고 있을 수 있는 데이터의 수 (int)

- random_state : 난수 (int)

 

 

 

복잡도(엔트로피, Entropy)

 

pk = A영역에 속한 레코드 중 k 범주에 속하는 레코드의 수

 

위 식은 복잡도를 수학적인 식으로 나타낸 것이다.

 

값이 높을수록 그 구간의 복잡도는 높고, 낮을 수록 해당 구간은 단순하다.

 

 

 

 

 

정보량

 

어떤 일이 매우 드물게 일어날 수록 정보량이 크다.

 

ex. 내일 맑을 예정 - 낮은 정보량

내일 여름이지만 눈이 내릴 예정 - 높은 정보량

 

어떤 사건들이 일어날 확률 비슷하다면 엔트로피는 커진다.

 

 

두 사건이 모두 0.5의 확률로 일어난다면 엔트로피의 값은 1로 최고치를 찍는다.

 

 

따라서

분기를 할 땐 엔트로피가 낮은 값을 나타내는 좋은 기준점을 이용한다.

 

 

 

 

좋은 기준점

 

각 변수를 이용해 가능한 모든 기준점으로 구간을 분리

 

분리된 구간의 복잡도(엔트로피)가 가장 낮은 기준점 선택

 

 

 

 

https://steadiness-193.tistory.com/257

 

Machine Learning - valid와 test를 train으로 전처리

https://steadiness-193.tistory.com/256 Machine Learning - train_test_split https://steadiness-193.tistory.com/253 Machine Learning - 랜덤으로 train과 test로 나누기 데이터 불러오기 seaborn의 iris 데..

steadiness-193.tistory.com

 

위 포스팅에서 만든 데이터셋을 이용한다.

 

 

 

 

매개변수는 아무 것도 건드리지 않고 그냥 예측해본 결과

 

약 76%의 정확도를 보인다.

 

 

 

 

매개변수(파라미터) 조정

 

 

max_depth, max_features, min_samples_split을 조금씩 조정하니 정확도가 80%로 올라갔다.

 

 

 

내용 및 이미지 참조 : https://blueskyvision.tistory.com/598

반응형