1. 분류 (Classification)
분류분석이란? 지도학습 기법 중 하나로 독립변수(Feature)를 통해 정답(Label)이 어떤 특정 카테고리로 분류될 것을 예측하는 기법을 말한다. 이때, Target Data의 자료는 주로 범주형에 속하고, 독립변수들 간의 관계를 분석해 Target Data의 각각의 데이터가 어떤 범주에 속할 지 예측한다.
위 그림에서 말하는 클래스(Class)가 바로 범주이며, 데이터의 종류에 따라 다양한 클래스를 가질 수 있다.
- 성별 Class : {Male, Female}
- 생존 여부 Class: {'0' : 생존, '1' : 사망}
분류의 종류
이름 | 설명 |
나이브 베이즈 Naive Bayes |
베이즈 통계와 생성모델에 기반한 분류 |
로지스틱 회귀 Logistic Regression |
독립변수와 종속변수의 선형 관계성에 기반한 분류 |
결정 트리 Decision Tree |
데이터 균일도에 따른 규칙 기반의 분류 |
서포트 벡터 머신 SVM(Support Vector Machine) |
개별 클래스 간의 최대 Margin을 효과적으로 찾아내주는 분류 |
최소 근접 알고리즘 Nearest Neighbor |
데이터 간의 근접 거리를 기반으로 하는 분류 |
신경망 Neural Network |
심층 연결 기반의 분류 |
앙상블 Ensemble |
서로 다른 (혹은 같은) 머신러닝 알고리즘을 결합한 분류 |
이렇듯 분류 분석에는 다양한 머신러닝 알고리즘들이 사용될 수 있는데, 오늘은 그 중 가장 대중적으로 쓰이는 결정 트리 알고리즘에 대해 알아보도록 하겠다.
Label 데이터의 클래스 개수에 따른 유형
1) 이진 분류
▶Label 데이터의 클래스가 2개
2) 다중 분류
▶ Label 데이터의 클래스가 3개 혹은 그 이상
2. 결정 트리 (Decision Tree)
결정트리란? 데이터의 규칙을 찾아내 Tree 기반의 분류 규칙을 만드는 방식
- 장점: 균일도’를 기반으로 한 알고리즘을 적용→ 직관적, 전처리 영향 적음
- 단점: 분류 규칙이 복잡할수록 과적합으로 인한 예측성능 저하의 가능성이 있음
- 앙상블 학습에서 좋은 약한 학습기로써의 역할을 수행하는 아주 기본적인 분류 모델
결정트리의 구조
- 규칙 노드: 분할 규칙을 담고 있다.
- 리프 노드: 최종 결정 노드
- 서브 트리: 규칙 노드를 root 노드로 갖는 트리로, 전체 트리의 부분집합
- 깊이(Depth): 루트 노드로부터 최하위 노드까지의 경로의 길이(깊이)
3. 데이터 분할 원리
▶ 원칙적으로 균일도가 높은, 즉 혼잡도가 낮은 데이터셋을 먼저 선택하도록 규칙 조건을 만든다.
- 균일도: C > B > A
- 혼잡도: A < B < C
균일도, 혼잡도를 측정하는 방법에는 다음과 같은 방식이 대표적이다.
- Information Gain
- Gini 지수
Information Gain (정보 이득 지수)
▶변수에 의해 데이터를 분할했을 때, 기대되는 엔트로피 (Entropy)의 감소 정도
Information Gain을 계산하기 위해서는 정보량과 엔트로피라는 개념부터 살펴보아야 한다.
1) 정보량
어떤 사건 $x$에 대한 정보량은 다음과 같이 구해진다.
$$ IV(x) = \log_b(\frac{1}{P(x)}) = -\log_b(P(x))$$
여기서 $b$는 정보량의 측정단위로, 보통 2를 많이 사용한다.
$b=2$를 주로 사용하는 이유: 로그의 밑을 2로 설정함으로써 정보량은 'bit' 단위로 표현된다.
이는 사건의 확률이 1/2 (즉, 50%의 확률)일 때, 그 사건의 정보량이 정확히 1비트임을 의미하고, 이는 하나의 '예/아니오' 질문으로 해당 사건에 대해 알아낼 수 있는 정보의 양과 일치한다.
2) 엔트로피
어떤 데이터 집합 $x \in X$에 대해, $X$에 대한 엔트로피는 다음과 같이 구해진다.
$$ H(X) = \sum_{i =1 }^{c}{p_i \times IV(x_i)} \;\;\;\;\;\; (c = \text{Number of Classes})$$
Information Gain $IG$는 원래 엔트로피에서 조건부 엔트로피를 뺀 값으로 계산된다. 여기서 원래 엔트로피는 전체 데이터 집합의 불확실성을, 조건부 엔트로피는 특정 특성에 따라 분할된 집합의 불확실성을 나타낸다.
$$IG = H(X) - H(X|S) \;\;\;\; (S = \text{어떤 특성})$$
$$H(X|S) = \sum_{j=1}^{d} \frac{|X_j|}{|X|} \times H(X_j)$$
여기서 $X_j : \text{특성 S의 j번째 값에 해당하는 데이터 집합의 부분 집합})$
Gini (지니) 지수
▶무작위로 선택된 데이터를, 데이터셋의 클래스 분포에 따라 어떤 클래스로 분류했을 때 잘못 분류할 확률
$$Gini(S) = \sum_{i=1}^{c}p_i(1-p_i) = 1 - \sum_{i=1}^{c}p_i^{2}$$
결정 트리 알고리즘은 지니 지수가 낮아지는 방향으로 학습한다.
4. 하이퍼 파라미터
1) min_samples_split:
- 노드를 분할하기 위한 최소한의 sample data 수
- 작게 설정할수록 분할되는 노드의 수 증가 → 과적합 가능성 증가
2) max_depth:
- 트리의 최대 깊이를 규정
- 깊이가 너무 깊어지면 과적합 가능
3) min_samples_leaf:
- 분할이 될 경우 각 브랜치 노드에서 가져야 할 최소 sample data 수
- 값이 클수록 상대적으로 노드 분할이 덜 진행됨
4) max_features:
- 최적의 분할을 위해 고려해야 할 최대 피처 수
- 디폴트는 None, 데이터 세트의 모든 피처를 사용
5) max_leaf_nodes:
- 말단 노드의 최대 개수
5. 과적합 방지 - 가지치기
사전 가지치기 (Pre-Pruning)
- 결정트리가 다 자라기 전에 알고리즘을 멈추는 방법
- 나무의 max_depth, max_leaf_nodes 등을 제어
- 새로운 데이터에 대한 예측 정확성 향상
사후 가지치기 (Post-Pruning)
- 결정트리를 끝까지 그린 후 밑에서부터 가지를 치는 방법
- 리프 노드의 불순도가 0인 상태의 트리를 생성한 후, 적절한 수준에서 리프 노들를 결합함
[실습 코드]
결정 트리" target="_blank" rel="noopener" data-mce-href="http://결정 트리">http://결정 트리
'AI & Data > Machine Learning' 카테고리의 다른 글
[머신러닝] 회귀 (Regression) (1) | 2024.06.03 |
---|---|
[머신러닝] 앙상블 (Ensemble) (0) | 2024.04.29 |
[머신러닝] 평가지표(Evaluation) (7) | 2024.03.14 |
[머신러닝] 사이킷런(Scikit - Learn) 라이브러리 part 2 : 데이터 전처리, 교차검증 (0) | 2024.03.04 |
[머신러닝] 사이킷런(Scikit-Learn) 라이브러리 part1 : 프레임워크, train_test_split (0) | 2024.02.13 |