선형회귀처럼 특성해석에 좋다.
다른 모델에 비해 성능이 떨어지지만 해석에 좋음.
샘플에 민감해서 트리구조가 잘 바뀌는 단점이 있음
회귀,분류모델 둘다 이용가능
다음에 배울 앙상블 방법의 기초가 됨
전처리과정을 중복코드를 최소화하여 쉽게 연결할 수 있다.
코드가 간결해지고 가독성이 증가한다.
파이프라인의 named_steps 속성을 사용해서 각 스텝에 접근 가능하다.
데이터가 가진 특성을 기준으로 분류해나가는 특성
분류과정은 새로운 데이터가 특정 말단 노드에 속한다는 정보를 확인한 뒤 말단노드의 빈도가 가장 높은 범주로 데이터를 분류한다.
다음 강의에서 여러 트리모델을 사용하는 앙상블 기법인 랜덤포레스트와 그레디언트부스팅트리모델 학습 예정
결정트리 학습은 노드를 어떻게 분할하는가에 대한 문제임
결정트리의 비용함수 정의, 그것을 최소화하도록 분할하는 것이 목표
트리학습에 자주쓰이는 비용함수
1) 지니불순도 : 계산이 빠르기에 디폴트로 사용한다.
2) 엔트로피 : 좀 더 균형잡힌 트리를 만들 수 있다.
불순도
1) 여러 범주가 섞여있는 정도를 말함
2) 45%,55%의 샘플은 불순도가 높다
3) 80%,20%인 샘플은 위의 경우보다 불순도가 낮다. purity(순수도)는 높음
정보획득 (imformaion gain)
1) 특정한 특성을 사용해 분할했을 때 엔트로피의 감소량
2) 분할전 노드불순도 - 분할후 자식노드들의 불순도
결정트리의 장점 : 이전의 회귀모델에 비해서 전처리를 덜 신경쓸수 있다. (스케일러를 제외하고 진행가능)
학습데이터의 정확도가 명확히 높으면서 검증세트의 정확도가 다수범주의 비율과 같게 나올 경우 (확실한 과적합)
트리의 형태는 export_graphviz를 통해서 확인가능하다.
루트노드는 가장 impormation gain이 큰 것을 이용
트리의 복잡도를 낮추어 일반화유도
자주 사용하는 하이퍼파라미터
1) min_samples_split : 노드에서 분기를 만들기 위해 최소한 얼마나 되는 샘플이 존재해야하는지 설정
2) min_samples_leaf : 리프노드에 얼마나 샘플이 존재해야하는지 설정
3) max_depth : 트리의 전체적인 깊이를 조절
공식문서에서 이외의 방법들 확인 가능
트리모델을 파이프라인에서 가져와 확인가능
전체 특성들의 중요도 합이 1이되도록 정규화되어있음
결정트리모델은 선형모델과 달리 비선형, 비단조, 특성상호작용의 특징을 가지고 있을 때도 이용이 가능하다.
ipywidget의 interact를 통해서 변화를 시각적으로 볼 수 있다.
1) https://www.learndatasci.com/glossary/gini-impurity/
2) https://gdcoder.com/decision-tree-regressor-explained-in-depth/
3) http://www.r2d3.us/visual-intro-to-machine-learning-part-1/
4) https://christophm.github.io/interpretable-ml-book/interaction.html#feature-interaction
5) https://christophm.github.io/interpretable-ml-book/tree.html#advantages-2
6) https://www.youtube.com/watch?v=LDRbO9a6XPU
7) https://scikit-learn.org/stable/modules/tree.html#tree-algorithms-id3-c4-5-c5-0-and-cart
8) https://victorzhou.com/blog/intro-to-random-forests/