6장 결정 트리¶
결정 트리(decision tree)는 분류와 회귀 작업 그리고 다중출력 작업도 가능한 다재다능한 머신러닝 알고리즘
복잡한 데이터셋도 학습할 수 있는 강력한 알고리즘, 랜덤 포레스트의 기본 구성 요소
6.1 결정 트리 학습과 시각화¶
6.2 예측하기¶
결정 트리의 여러 장점 중 하나는 데이터 전처리가 거의 필요하지 않음, 특성의 스케일을 맞추거나 평균을 원점에 맞추는 작업이 필요하지 않음
결정 트리는 직관적이고 결정 방식을 이해하기 쉬운 하이트박스 모델 / 랜덤 포레스트나 신경망은 블랙박스 모델
6.3 클래스 확률 추정¶
- 결정 트리는 한 샘플이 특정 클래스 k에 속할 확률을 추정해 줌
6.4 CART 훈련 알고리즘¶
사이킷런은 결정 트리를 훈련시키기 위해 CART(classification and regression tree) 알고리즘을 사용
CART 알고리즘은 비용 함수를 통해 훈련 세트를 둘로 나누고 같은 방식으로 서브셋을 또 나누고를 계속 반복
CART 알고리즘은 탐욕적 알고리즘, 최적의 트리를 찾는 것은 NP-완전 문제로 매우 많은 시간이 필요
6.5 계산 복잡도¶
- 결정 트리는 거의 균형을 이루고 있으므로 결정 트리를 탐색하기 위해서는 약 O(log2(m))개의 노드를 거쳐야 함, 각 노드는 하나의 특성값만 확인하기 때문에 예측에 필요한 전체 복잡도는 특성 수와 무관
6.6 지니 불순도 또는 엔트로피?¶
기본적으로 지니 불순도가 사용되지만 criterion 매개변수를 "entropy"로 지정하면 엔트로피 불순도를 사용할 수 있음
엔트로피는 분자의 무질서함을 측정하는 것으로 원래 열역학의 개념, 분자가 질서 정연하면 엔트로피가 0에 가까움
지니 불순도와 엔트로피 둘다 비슷한 트리를 만들어내지만, 지니 불순도가 조금 더 계산이 빠름
그러나 지니 불순도는 가장 빈도 높은 클래스를 한쪽 가지로 고립시키는 경향이 있는 반면 엔트로피는 조금 더 균형 잡힌 트리를 만듦
6.7 규제 매개변수¶
결정 트리는 훈련되기 전에 파라미터 수가 결정되지 않는 비파라미터 모델, 그리서 모델 구조가 데이터에 맞춰져서 고정되지 않고 자유로움 >> 과대적합 위험이 큼
반면 파라미터 모델은 미리 정의된 모델 파라미터 수를 가지므로 자유도가 제한되고 과대적합될 위험이 줄어들지만 그만큼 과소적합도리 위험은 커짐
결정 트리는 과대적합을 피하기 위해 자유도를 제한할 필요가 있음
max_depth, min_samples_split(분할되기 위해 노드가 가져야 하는 최소 샘플 수), min_samples_leaf(리프 노드가 가지고 있어야 할 최소 샘플 수), min_weight_fraction_leaf(min_samples_leaf와 같지만 가중치가 부여된 전체 샘플 수에서의 비율), max_leaf_nodes(리프 노드의 최대 수), max_features(각 노드에서 분할에 사용할 특성의 최대 수) 등의 매개변수로 규제
6.8 회귀¶
결정 트리는 회귀 문제에도 사용
분류에서와 같이 회귀 작업에서도 결정 트리가 과대적합되기 쉬움, 규제가 필요
6.9 불안정성¶
결정 트리는 이해하고 해석하기 쉬우며, 사용하기 편하고, 여러 용도로 사용할 수 있으며, 성능도 뛰어남
결정 트리는 계단 모양의 결정 경계를 만듬, 그래서 운련 세트의 회전에 민감함
PCA 기법을 사용해 더 좋은 방향으로 회전시켜 학습을 진행
연습문제¶
백만 개의 샘플을 가진 훈련 세트에서 (규제 없이) 훈련시킨 결정 트리의 깊이는 대략 얼마일까요?
이진 결정 트리를 제한을 두지 않고 훈련시키면 훈련 샘플마다 하나의 리프 노드가 되므로 어느 정도 균형이 잘 잡힌 트리가 된다. 따라서 훈련 세트에 백만 개 샘플이 있다면 결정 트리의 깊이는log2(106)=20이 될 것이다.
한 노드의 지니 불순도가 보통 그 부모 노드보다 작을까요, 아니면 클까요? 일반적으로 작거나 클까요, 아니면 항상 작거나 클까요?
한 노드의 지니 불순도는 일반적으로 부모의 불순도보다 낮습니다. 이는 자식의 지니 불순도의 가중치 합이 최소화되는 방향으로 각 노드를 분할하는 CART 훈련 알고리즘의 비용 함수 때문입니다.
결정 트리가 훈련 세트에 과대적합되었다면 max_depth를 줄이는 것이 좋을까요?
모델에 규제를 가해야하기 때문에 max_depth를 낮추는 것이 좋다.
결정 트리가 훈련 세트에 과소적합되었다면 입력 특성의 스케일을 조정하는 것이 좋을까요?
결정 트리는 훈련 데이터의 스케일이나 원점에 맞추어져 있는지 상관하지 않는다. 이것이 결정 트리의 장점 중 하나이다. 그러므로 스케일 조정은 시간낭비이다.
백만 개의 샘플을 가진 훈련 세트에 결정 트리를 훈련시키는 데 한 시간이 걸렸다면, 천만 개의 샘플을 가진 훈련 세트에 결정 트리를 훈련시키는 데는 대략 얼마나 걸릴까요?
결정 트리 훈련의 계산 복잡도는 O(n×mlog(m)) 이다.훈련 세트의 크기에 10을 곱하면 훈련 시간은 K=(n×10m×log(10m))/(n×m×log(m))=10×log(10m)/log(m) 배 늘어난다.m=106이면, k= 11.7시간 정도이다.
십만 개의 샘플을 가진 훈련 세트가 있다면 presort=True로 지정하는 것이 훈련 속도를 높일까요?
훈련 세트가 수천 개 이하의 샘플 정도로 작을 경우에만 presort=True로 지정했을 때, 데이터를 미리 정렬하여 훈련 속도를 높일 수 있다. 하지만 훈련 세트가 클 경우에는 속도가 많이 느려진다.
from IPython.core.display import display, HTML
display(HTML("<style>.container {width:100% !important;}</style>"))
C:\Users\we626\AppData\Local\Temp\ipykernel_20220\3013929331.py:1: DeprecationWarning: Importing display from IPython.core.display is deprecated since IPython 7.14, please import from IPython display from IPython.core.display import display, HTML
'Book report > 핸즈온 머신러닝' 카테고리의 다른 글
[핸즈온 머신러닝] Chapter 8. 차원 축소 (0) | 2025.02.21 |
---|---|
[핸즈온 머신러닝] Chapter 7. 앙상블 학습과 랜덤 포레스트 (0) | 2024.04.05 |
[핸즈온 머신러닝] Chapter 5. 서포트 벡터 머신 (0) | 2023.09.12 |
[핸즈온 머신러닝] Chapter 4. 모델 훈련 (0) | 2023.09.06 |
[핸즈온 머신러닝] Chapter 3. 분류 (0) | 2023.08.28 |