랜덤포레스트
결정 트리를 기본 모델로 이용하는 앙상블 기법
여러 개의 결정 트리 분류기가 전체 데이터에서 배깅 방식으로 각자의 데이터를 샘플링해 개별적으로 학습을 수행한 뒤 최종적으로 모든 분류기가 보팅을 통해 예측 결정을 하게 됨.
bootstrapping(샘플을 여러개 뽑음) + aggregating(각 모델을 학습시킨 결과물 집계)
+OOB(Out-Of-Bag)
: 샘플링 과정에서 선택되지 않은 데이터 → 모델 검증에 이용 가능

→ OOB 샘플 (전체의 36.8%)로 모델 검증
어떤 한 샘플이 추출되지 않을 확률 = 36.8%
학습 도중 생성한 tree에 OOB 데이터를 넣고 accuracy나 error rate 등을 측정하면 학습이 잘 진행되고 있는지, overfitting은 없는지 등의 여부를 확인할 수 있음.
OOB score를 사용하면 별도의 cross-validation 과정을 거치지 않아도 됨. OOB 자체로 cross-validation 효과가 있기 때문!
별도의 validation data를 할당해서 성능을 평가하는 것도 좋지만, 데이터가 적은 경우 자투리 데이터인 OOB를 활용하면 데이터 사용 효율을 높일 수 있음.
데이터의 개수 N이 충분히 크다면 sub data에 포함되지 않은 데이터의 비율은 약 36.8% 정도 됨.
따라서 학습데이터에서 36.8%의 비율로 validation data를 할당한 것과 동일한 효과를 볼 수 있음→ 데이터를 36.8% 정도 절약할 수 있다는 의미
- 부트스트랩 데이터셋으로 만들어진 기본 결정트리 모델들을 합치는 과정
- 회귀 -> 결과의 평균
- 분류 -> 다수결로 가장 많은 모델이 선택한 것
- random subspace
: 원래 변수들 중에서 모델 구축에 쓰일 입력 변수를 무작위로 선택
분기할 때, 어떤 입력을 고를까? x1 ~ x8 있다면, random하게 4개 뽑아서 이것들만 조사. 학습 룰에 따라(후보만 랜덤인것임) 4개 중에 하나 뽑고, 분할된 노드에서 동일한 과정 반복.
분기하는 순간에 어떤 입력을 보고 쪼갤지 결정할건데, 그 쪼개려는 대상을 한번 랜덤으로 부분집합 뽑아놓고 선택, → 같은 데이터라도 다른 트리 가능.
- generalization error

p: decision tree 사이의 평균 상관 관계( 낮을 수록 좋음. 독립될수록 좋은거니까)
s:올바로 예측한 트리와 잘못 예측한 트리 수 차이의 평균(기본 성능, 클수록 좋음. 잘 맞춘게 많다는 거니까)
s가 커지면, (1-s2)/s2 은 작아짐
bagging과 random subspace로 모델 사이의 상관관계(p) 감소
개별 tree의 정확도가 높고, 각각의 독립성이 높을수록 전체 성능 증가
- 하이퍼 파라미터
- n_estimators : 결정 트리의 수 (클수록 성능과 계산시간 올라감)
- max_features : 노드 분할 시 무작위로 선택되는 변수의 수
(작을수록 다양한 트리 생성, 크면 같은 특성을 사용하는 트리가 많아져 다양성이 감소)
- max_depth : 각 트리의 최대 깊이
- min_samples_leaf : 각 리프 노드에서의 최소 데이터 수
- min_samples_split : 노드를 분할하기 위한 최소한의 샘플 데이터 수
'Machine Learning > 분류' 카테고리의 다른 글
[파이썬 머신러닝 가이드] 분류 - 베이지안 최적화 기반의 HyperOpt를 이용한 하이퍼 파라미터 튜닝 (2) | 2023.12.22 |
---|---|
[파이썬 머신러닝 가이드] 분류 - LightGBM (0) | 2023.12.22 |
[파이썬 머신러닝 가이드] 분류 - XGBoost (0) | 2023.12.22 |
[파이썬 머신러닝 가이드] 분류 - GBM (0) | 2023.12.22 |
[파이썬 머신러닝 가이드] 분류 - 결정 트리, 앙상블 학습 (0) | 2023.12.22 |