- 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 기법 사용
- 훈련 데이터에 있는 작은 변화에도 매우 민감
- 랜덤 포레스트는 많은 트리에서 만든 예측을 평균하여 이런 불안전성을 극복 가능
'인공지능(AI) > 머신러닝' 카테고리의 다른 글
[핸즈온 머신러닝] 8장 차원 축소 (0) | 2022.01.24 |
---|---|
[핸즈온 머신러닝] 7장 앙상블 학습과 랜덤 포레스트 (0) | 2022.01.22 |
[핸즈온 머신러닝] 5장 서포트 벡터 머신 (1) | 2022.01.18 |
[핸즈온 머신러닝] 4장 모델 훈련 (0) | 2022.01.17 |
[핸즈온 머신러닝] 3장 분류 (0) | 2022.01.11 |
댓글