티스토리 뷰

1. 결정 트리 모델(Decision Tree Model)

  • 머신 러닝 알고리즘 중 직관적으로 이해하기 쉬운 알고리즘
  • 데이터에 있는 규칙을 학습을 통해 자동으로 찾아내 트리(Tree) 기반의 분류 규칙을 만드는 것
  • 규칙 노드(Decision Node)로 표시된 노드는 규칙조건이 되는 것이고, 리프노드(Leaf Node)로 표시된 노드는 결정된 클래스 값
  • 또한 새로운 규칙을 학습을 통해 자동으로 찾아내 트리(Tree) 기반의 분류 규칙을 만드는 것.

2. 의사결정트리에서 데이터 불순도를 측정하는 방법?

  1. 지니인덱스(Gini Index)
  2. 엔트로피(Entropy)
  3. 분류 오류(Classification Error)

2.1 정보이득(Information Gain) - 엔트로피(Entropy)

  • 의사 결정 학습에서 각 노드에서 분기하기 위한 최적의 질문
  • 어느 특정 노드에서 m개의 자식 노드로 분기되는 경우 정보이득은 아래의 식으로 정의
  • 정보 이득은 엔트로피라는 개념을 기반으로함
  • 엔트로피란? 주어진 데이터 집합의 혼잡도, 서로 다른 값이 섞여 있으면 엔트로피가 높고, 같은 값이 섞여 있으면 엔트로피가 낮다.
  • 정보이득(Information Gain)지수는 1에서 엔트로피 지수를 뺀 값. 결정 트리는 정보 이득 지수로 분할 기수를 정한다.

2.2 지니 인덱스

  • 원래 경제학에서 불평등 지수를 나타낼 때 사용하는 계수
  • 경제학자인 코라도 지니(Corrado Gini)의 이름에서 딴 계수로서 0이 가장 평등하고 1로 갈수록 불평등
  • 머신러닝에 적용될 때는 의미론적으로 재해석 되어 데이터가 다양한 값을 가질수록 평등, 특정값으로 쏠릴 경우에는 불평등한 값이 됨.
  • 다양성이 낮을 수록 균일도가 높다는 의미로서, 1로 갈수록 균일도가 높으므로 지니 계수가 높은 속성을 기준으로 분할하는 것.

3. 결정트리모델(Decision Tree Model) 특징

3.1 장점

  • 정보의 '균일도' 라는 룰을 기반으로 하고 있어서 알고리즘이 쉽고 직관적
  • 결정 트리가 룰이 매우 명확하며 , 이에 기반해 어떻게 규칙 노드와 리프 노드가 만들어지는지 알 수 있으며, 시각화로 표현까지 할 수 있음
  • 정보의 균일도만 신경쓰면 되므로 특별한 경우를 제외하고 각피처의 스케일링과 정규화같은 전처리 작업이 필요없다.

3.2 단점

  • 과적합으로 정확도가 떨어짐
  • 피처 정보의 균일도에 따른 룰 규칙으로 서브 트리를 계속 만들다 보면 피처가 많고 균일도가 다양하게 존재할수록 트리의 깊이가 커지고 복잡해질수밖에 없다.

4. 결정 트리 모델

  • 사이킷런은 결정 트리 알고리즘을 구현한 DecisionTreeClassifier와 DecisionTreeRegressor 클래스를 제공
  • DecisionTreeClassfier는 분류를 위한 클래스
  • DecisionTreeRegressor는 회귀를 위한 클래스
  • 사이킷런 결정 트리 구현은 CART(Classification And Regression Trees) 알고리즘 기반

 

파라미터명 설명
min_samples_split

노드를 분할하기 위한 최소한의 샘플 데이터 수로 과적합을 제어하는데 사용

디폴트는 2이고 작게 설정할수록 분할되는 노드가 많아져서 과적합 가능성 증가

과적합을 제어, 1로 설정한 경우 분할되는 노드가 많아져서 과적합 가능성 증가 

min_samples_leaf

말단 노드(Leaf)가 되기 위한 최소한의 샘플 데이터수

Min_samples_split와 유사하게 과적합 제어용도, 그러나 비대칭적 데이터의 경우 특정 클래스의 데이터가 극도로 작을 수 있으므로 이 경우는 작게 설정 필요 

max_features

최적의 분할을 위해 고려할 최대 피처 개수, 디폴트는 None으로 데이터 세트의 모든 피처를 사용해 분할 수행

int 형으로 지정하면 대상 피처의 개수, float 형으로 지정하면 전체 피처 중 대상 피처의 퍼센트

'sqrt' 전체 피처중 sqrt(전체 피처 개수) 

 

max_depth

트리의 최대 깊이 규정

디폴트는 None. Noe으로 설명하면 완벽하게 클래스 결정 값이 될 때까지 깊이를 계속 키우며 분할하거나 노드가 가지는 데이터 개수가 min_samples_split보다 작아질때까지 계속 깊이를 증가시킴

깊이가 깊어지면 min_samples_split 설정대로 최대 분할하여 과적합할 수 있으므로 적절한 값으로 제어 필요

max_leaf_nodes 말단 노드(leaf)의 최대가수 

 

<출처>

1. 파이썬 머신러닝 완벽 가이드

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함