본문 바로가기
인공지능(AI)/머신러닝

[핸즈온 머신러닝] 6장 결정 트리

by hyezzisss 2022. 1. 18.
  • SVM처럼 분류와 회귀 작업, 다중 출력 작업도 가능한 다재다능한 머신러닝 알고리즘
  • 매우 복잡한 데이터셋도 학습할 수 있는 강력한 알고리즘
  • 최근에 가장 강력한 머신러닝 알고리즘 중 하나인 랜덤 포레스트의 기본 구성 요소이기도함

1. 결정 트리 학습과 시각화


from sklearn.tree import DecisionTreeClassifier

tree_clf = DecisionTreeClassifier(max_depth=2)
tree_clf.fit(X, y)
  • export_graphviz() 함수를 사용해 그래프 정의를 .dot 파일로 출력하여 훈련된 결정 트리를 시각화할 수 있음

2. 예측하기


  • 노드의 sample 속성: 얼마나 많은 훈련 샘플이 적용되었는지 헤아린 것
  • node의 gini 속성: 불순도 측정 (한 노드의 모든 샘플이 같은 클래스에 속해 있다면 이 노드를 순수(gini=0)하다고 함)
  • 사이킷런이진트리만 만드는 CART 알고리즘을 사용 -> 리프 노드 외의 모든 노드는 자식 노드를 2개씩 가짐
  • 화이트박스 모델: 결정 트리와 같이 직관적이고 결정 방식을 이해하기 쉬운 모델
  • 블랙박스 모델: 랜덤 포레스트와 같은 신경망으로 왜 그런 예측을 만드는지 쉽게 설명하기 힘든 모델

3. 클래스 확률 추정


  • 결정 트리는 한 샘플이 특정 클래스 k에 속할 확률 추정 가능

4. CART 훈련 알고리즘


  • 그리디 알고리즘으로 맨 위 루트 노드에서 최적의 분할을 찾으며 이어가는 각 단계에서 이 과정을 반복
  • 이 과정은 최대 깊이가 되면 중지하거나 불순도를 줄이는 분할을 찾을 수 없을 때 멈춤

5. 계산 복잡도


  • 루트 노드에서부터 리프 노드까지 거의 균형을 이루고 있으므로 결정 트리를 탐색하기 위해서는 O(log2(m))개의 노드를 거쳐야 함
  • 각 노드는 하나의 특성 값만 확인하기 때문에 예측에 필요한 전체 복잡도는 특성 수와 무관하게 O(log2(m))임 -> 큰 훈련 세트를 다룰 때도 예측 속도가 매우 빠름
  • 각 노드에서 모든 샘플의 모든 특성을 비교하면 훈련 복잡도는 O(n*mlog2(m))이 됨

6. 지니 불순도 또는 엔트로피?


  • 기본적으로 지니 불순도가 사용되지만 criterion 매개변수를 "entropy"로 지정하여 엔트로피 불순도 사용 가능
  • 엔트로피: 분자의 무질서함을 측정하는 것 -> 분자가 안정되고 질서 정연하면 엔트로피는 0에 가까움
  • 지니 불순도와 엔트로피는 실제로 큰 차이가 없음 -> 둘 다 비슷한 트리를 만들어냄
    • 지니 불순도가 조금 더 계산이 빠르므로 기본값으로 좋음
    • 그러나 다른 트리가 만들어지는 경우 지니 불순도가 가장 빈도 높은 클래스를 한쪽 가지로 고립시키는 경향이 있음 vs 엔트로피는 조금 더 균형 잡힌 트리를 만듦

7. 규제 매개변수


  • 결정 트리는 훈련 데이터에 대한 제약 사항이 거의 없음 -> 제한을 두지 않으면 훈련 데이터에 아주 가깝게 맞추려고 해서 과대 적합되기 쉬움
  • 비파라미터 모델: 결정 트리는 훈련되기 전에 파라미터 수가 결정되지 않음 -> 모델 구조가 데이터에 맞춰져서 고정되지 않고 자유로움
  • 파라미터 모델: 미리 정의된 모델 파라미터 수를 가지므로 자유도가 제한되고 과대 적합될 위험이 줄어듦 (과소 적합될 위험은 커짐)
  • 규제 매개변수
    • max_depth: 결정 트리의 최대 깊이 제어
  • DecisionTreeClasifier에서 비슷하게 결정 트리의 형태를 제한하는 매개변수
    • min_samples_split: 분할되기 위해 노드가 가져야 하는 최소 샘플 수
    • min_samples_leaf: 리프 노드가 가지고 있어야 할 최소 샘플 수
    • min_weight_fraction_leaf: min_samples_leaf와 같지만 가중치가 부여된 전체 샘플 수에서의 비율
    • mean_leaf_nodes: 리프 노드의 최대 수
    • max_leaf_nodes: 리프 노드의 최대 수
    • max_features: 각 노드에서 분할에 사용할 특성의 최대 수

8. 회귀


  • 결정 트리는 회귀 문제에서도 사용 가능
  • 분류에서와 같이 회귀에서도 결정 트리가 과대 적합되기 쉬움

9. 불안전성


장점

  • 이해하고 해석하기 쉬움
  • 사용하기 편하고 여러 용도로 사용 가능
  • 성능이 뛰어남

단점

  • 계단 모양의 결정 경계를 만들기 때문에 훈련 세트의 회전에 민감
    • 이런 문제를 해결하는 방법으로 훈련 데이터를 더 좋은 방향으로 회전시키는 PCA 기법 사용
  • 훈련 데이터에 있는 작은 변화에도 매우 민감
    • 랜덤 포레스트는 많은 트리에서 만든 예측을 평균하여 이런 불안전성을 극복 가능

 

 

 

 

댓글