반응형
결정트리 (Decision Tree)는 의사결정나무라고도 합니다 분류와 회귀 모두 가능한 지도학습 모델이며, 스무고개 하듯이 질문을 이어가며 학습합니다 아래처럼요
[노드]
- 맨 위에 날개가 있나요? 가 루트 노드(Root Node)
- 맨 마지막에 매, 펭귄, 돌고래, 곰은 터미널 노드(Terminal Node) 혹은 리프 노드(Leaf Node) 라고 합니다
- 나무같이 생겨서 결정 트리라고 부릅니다
[과적합]
어떤 기준으로 규칙을 만들어야 (규칙 : 날 수 있나요? 지느러미가 있나요?) 분류 성능을 좌우함
규칙이 많음 → 학습이 잘됨 → 복잡함 → 과적합
[정보이득]
- 정보이득 (Infromation Gain)은 엔트로피를 기반으로 하는 개념으로 엔트로피는 주어진 데이터 집합의 혼잡도를 의미하는데 서로 다른 값들이 섞여 있으면 엔트로피가 높고 같은 값으로 섞여 있으면 엔트로피가 낮다.
- IG가 높음 : 정보가 풍부
- 정보이득 : 1 - (엔트로피 지수)
[엔트로피] : 주어진 데이터 집합의 혼잡도
- 모든 노드에서 계산 가능하며 엔트로피가 낮으면 IG가 높아지며 높으면 IG가 낮아진다.
- 계산 방법 예시
- ex) 전체 데이터에서 운동을 하는 사람 : 하지 않는 사람이 3:2 라고 가정하자
- 이때 운동 하는 사람의 비율은 0.6 하지 않는 사람의 비율은 0.4이다.
- 이를 수식으로 나타내면 -0.6 * log2(0.6) - 0.4 * log2(0.4) = 0.971 으로 계산 된다.
[지니계수]
- 지니계수 : 낮을수록 데이터의 균일도가 높고 높으면 균일도가 낮음
- 높을수록 잘 분류되지 못한것, 높을수록 혼잡도가 높음
- 지니계수 계산 예시 1 (리프노드)
- 이 그림에서 다람쥐가 1, 낙타가 4 인데 지니계수를 계산해보자
- 다람쥐 = 1/5, 낙타 = 4/5 사실 계산은 거의 다했다
- 1-((1/5)**2 + (4/5)**2)
- 다람쥐 비율 제곱 + 낙타 비율 제곱 하고 1에서 빼기
- 지니계수 계산 예시 2 (질문노드)
- 이런게 있다고 할때
- 왼쪽 지니계수 계산은 아래와 같다 위에 다람쥐 낙타 예시와 값만다름
- 이때 이 질문에 대한 지니계수를 구하고 싶어요
- 이렇게 각각 리프 노드의 지니계수를 곱해주고 계산하면 질문에 대한 지니계수를 구할 수 있어요
[균일도]
- A는 낮은 균일도, C는 높은 균일도
[불순도]
- 불순도 : 여러 범주가 섞여있는 정도를 의미
- (45%, 55%)인 샘플은 불순도가 높으며 (80%, 20%)인 샘플은 불순도가 낮다
- 즉 불순도가 낮다 = 지니계수가 높다 = 엔트로피가 낮다 = 균일도가 높다 = 정보이득이 높다
[가지치기]
- 가지치기(Pruning)는 과적합을 방지하고 일반화 성능을 높이기 위한 방식으로 모델의 복잡성을 줄이는 목적으로 사용됨
- 결정트리의 가지를 제거하거나 병합하여 트리의 크기를 줄이는 과정
- Max_depth를 통해 나무의 깊이를 줄이거나 Min_sample_split 파라미터를 조정하여 한 노드에 들어있는 최소 데이터수를 조정함
- 오버피팅을 줄일 수 있으나 너무 과하면 데이터 정확도가 떨어 질 수 있음
[각각의 개념이 어디에 쓰이는지]
- 한번 분할할때 아래 4개의 개념을 전부 사용하기도 하고 선택해서 사용하기도 함
- IG : 루트 노드부터 각 노드가 분할 될 때, IG를 최대화 하는 특성을 선택함
- 엔트로피 : 엔트로피의 감소량을 측정하여 불확실성을 최소화하는 방향으로 분할
- 지니계수 : 데이터의 균일도를 최대화 하는 특성 선택
- 균일도 : 균일도를 높이는 방향으로 분할
- 의사결정나무에서 루트 노드에서 시작하여 데이터를 분할해 나갈 때, 다양한 특성들로 분할해보고 그 중에서 Information Gain (정보 이득)이 가장 높은 특성을 선택하여 분할하는 것이 일반적인 접근 방식입니다.
[하이퍼 파라미터]
- Min_sample_split : 샘플이 최소한 몇개 이상이어야 하위 노드로 분리 할 것 인지 (클수록 과적합 방지, 낮을수록 정확하게 분리되어 과적합)
- Min_sample_leaf : 잎 노드가 되려면 가지고 있어야 할 최소 샘플의 수 (클수록 과적합 방지, 낮을수록 과적합)
- Min_sample_split을 만족해도 Min_sample_leaf를 만족하지 못하면 leaf가 되지 못한다
- Max_depth : 얼마나 깊게 트리를 만들 것 인지, None이면 최대한 깊게 (불순도가 0이 될때까지)
- Max_leaf_nodes : 최대 몇개의 잎 노드가 만들어 질 때 까지 리프 노드로 분리 할 것 인지
- Max_feature : 최적의 split을 위해 고려할 최대 feature 개수
[변수 중요도]
- 변수 중요도를 의미하는 Feature Importance Plot을 통해서 결정트리를 시각화 할 수 있습니다.
- 결과 변수를 예측할때 어떤 예측 변수의 기여도가 높은지를 확인 할 수 있는 방법이에요.
→ 이런 결정 트리 모아둔게 랜덤포레스트~!
[CART] : Greedy Algorithm
- 결정트리를 훈련시키기 위해서 Classification and Regression Tree 알고리즘을 사용함
- 훈련세트를 하나의 특성 K와 임계값 t를 사용해서 2개의 서브셋으로 나눔
- ex: 꽃잎의 길이 (K) ≤ 2.45cm (t)
- 가장 불순도가 낮은 서브셋으로 나눌 수 있는 (K,t) 를 찾음
- 이 알고리즘이 최소화 해야 하는 비용함수
- 계속 나누다가 최대 깊이가 되면 중지하거나 불순도를 줄이는 분할을 찾을 수 없을 때 멈춤
[지니 불순도와 엔트로피]
- 지니 불순도와 엔트로피는 큰 차이가 없어서 둘 다 비슷한 트리를 만들어냄
- 그렇지만 지니 불순도가 조금 더 계산이 빠름
- 지니 불순도는 가장 빈도가 높은 클래스를 한쪽 가지로 고립시키는 경향이 있으나 엔트로피는 조금 더 균형 잡힌 트리를 만듦
[규제 매개변수]
- 결정트리는 훈련 데이터에 대한 제약 사항이 거의 없는 편
- 제한이 없으면 트리가 훈련 데이터에 과적합 되기 쉽고, 훈련전에 파라미터 수가 결정되지 않음 → 비 파라미터 모델
- 파라미터 모델 : 미리 정의된 모델 파라미터 수를 가지므로 자유도가 제한되고 과대적합 될 위험이 줄어듦
- 규제 : 트리의 자유도 제한하기 (max_depth) : max_depth를 줄이면 모델을 규제하게 되고 과대적합의 위험이 감소함
[회귀]
- 회귀도 분류와 마찬가지로 규제가 없다면 결정트리가 과대적합 되기 쉬움
- 규제 추가 전 후를 비교하면 과적합 차이가 나는 걸 알 수 있음
[불안정성]
- 결정트리는 계단 모양의 결정 경계를 만들기 때문에 훈련세트 회전에 민감함
- 또 다른 문제는 훈련 데이터에 있는 작은 변화에도 매우 민감하다는것
- → 많은 트리에서 만든 예측을 평균하여 불안정성을 극복하는 랜덤 포레스트 개발
[참고]
- 티스토리 : https://gwoolab.tistory.com/24 아래 유튜브 기반
- 유튜브 : https://www.youtube.com/watch?v=7VeUPuFGJHk&t=268s (지니계수 계산법 제일 쉽게 설명함)
반응형
'머신러닝' 카테고리의 다른 글
[배깅,부스팅] 내가 이해한 배깅 및 부스팅 방법론 (1) | 2024.05.21 |
---|---|
[PCA] 내가 이해한 PCA (0) | 2024.05.21 |
[정규화] 내가 이해한 릿지, 라쏘, 일라스틱넷 (0) | 2024.05.15 |
댓글