728x90
반응형
Bagging(Bootstrap Aggregation)
여러 개의 학습 알고리즘, 모델을 통해 각각 결과를 예측하고 모든 결과를 동등하게 보고 취합해서 결과를 얻는 방식
한 가지 분류 모델을 여러 개 만들어서 서로 다른 학습 데이터로 학습시킨 후(bootstrap), 동일한 테스트 데이터에 대한 서로 다른 예측값들을 투표를 통해(aggregation) 가장 높은 예측값으로 최종 결론을 내리는 앙상블 기법
- 기본 요소로 결정 트리 사용
- 샘플을 여러 번 뽑아(Bootstrap) 각 모델을 학습시켜 결과물을 집계(Aggregration) 하는 방법
- 무작위로 훈련 데이터 셋을 잘게 나눈 후 나누어진 훈련 데이터 셋을 여러 개의 모델에 할당하여 학습
- 중복을 허용하며 훈련 데이터 셋을 나누는데 통계학에서는 이 방법을 부트스트랩, 중복이 허용된 리샘플링이라고 함
Random Forest
결정 트리를 배깅해서 예측을 실행하는 모델
- bagging의 대표적인 모델
- 성능이 매우 뛰어남
- 매개 변수 튜닝을 많이 하지 않아도 잘 작동
- 데이터의 스케일을 맞출 필요 없음
Random Forest 구성
Random Forest 는 전체 Feature 중 랜덤으로 일부 Feature만 선택해 하나의 결정 트리를 만들고, 또 전체 Feature 중 랜덤으로 일부 Feature를 선택해 또 다른 결정 트리를 만들며, 여러 개의 의사 결정 트리를 만드는 방식으로 구성
- 의사 결정 트리마다 하나의 예측 값을 내놓음
여러 결정 트리들이 내린 예측 값들 중, 가장 많이 나온 값을 최종 예측값으로 정함
- 다수결의 원칙에 따르는 것
- 하나의 거대한 (깊이가 깊은) 결정 트리를 만드는 것이 아니라 여러 개의 작은 결정 트리를 만드는 것
- 여러 개의 작은 결정 트리가 예측한 값들 중, 가장 많이 등장한 값(분류일 경우) 혹은 평균값(회귀일 경우)을 최종 예측 값으로 정하는 것
Random Forest의 Random (무작위적)의 의미
- Random은, 각각의 의사 결정 트리를 만드는데 있어 쓰이는 특징들을 무작위로 선정한다는 의미
- 예를 들어, 건강 위험도를 30개의 특징들로 설명할 수 있다면, 30개의 특징들 중 무작위로 일부만 선택하여, 가장 건강 위험도를 잘 예측할 수 있는 하나의 트리를 구성한다는 의미
Random Forest 장점과 단점
Random Forest 장점
- 사용 가능한 가장 정확한 learning algorithm 중 하나
- Classification(분류) 및 Regression(회귀) 문제에 모두 사용 가능
- 대용량 데이터 처리에 효과적
- 변수 삭제없이 수천개의 입력 변수를 처리할 수 있다
- 분류에 중요한 변수를 추정
- Missing value(결측치)를 다루기 쉬움
- 모델의 노이즈를 심화시키는 Overfitting(오버피팅) 문제를 회피하여, 모델 정확도를 향상시킴
- Classification 모델에서 상대적으로 중요한 변수를 선정 및 Ranking 가능
Random Forest 단점
- noise classification/regression이 있는 일부 데이터 세트에 overfitting하는 것으로 관찰됨
- 레벨 수가 다른 범주형 변주를 포함한 데이터의 경우 랜덤 포레스트는 더 많은 레벨을 가진 속성에 유리하게 편향된다. 따라서 랜덤 포레스트의 변수 importance scores는 이 유형의 데이터에 대해 신뢰할 수 없다
Scikit-Learn Random Forest Hyper-parameters
n_estimators: 랜덤 포레스트 안의 결정 트리 갯수
- n_estimators는 클수록 좋다.
- 결정 트리가 많을수록 더 깔끔한 Decision Boundary가 가능
- 하지만 그만큼 메모리와 훈련 시간이 증가
- Default는 10
max_features: 무작위로 선택할 Feature의 개수
- max_features=n_features이면 30개의 feature 중 30개의 feature 모두를 선택해 결정 트리를 만든다.
- 단, bootstrap=True이면 30개의 feature에서 복원 추출로 30개를 뽑는다
- 특성 선택의 무작위성이 없어질 뿐 샘플링의 무작위성은 그대로인 것
- bootstrap=True는 default 값
- max_features 값이 크다면 랜덤 포레스트의 트리들이 매우 비슷해지고, 가장 두드러진 특성에 맞게 예측
- max_features 값이 작다면 랜덤 포레스트의 트리들이 서로 매우 달라지고, 오버피팅이 줄어들 수 있다
- max_features는 일반적으로 Defalut 값을 사용
max_depth : 트리의 깊이
min_samples_leaf : 리프노드가 되기 위한 최소한의 샘플 데이터 수
min_samples_split : 노드를 분할하기 위한 최소한의 데이터 수
max_leaf_nodes : 리프노드의 최대 개수
References
728x90
반응형
'Machine Learning > Supervised Learning' 카테고리의 다른 글
[Supervised Learning][Regression] Regression Tree(회귀 트리) (0) | 2022.10.10 |
---|---|
[Supervised Learning][Ensemble][Boosting] Gradient Boosting (0) | 2022.10.06 |
[Machine Learning][Regression Metrics] R-squared(결정계수) (0) | 2022.10.05 |
[Supervised Learning][Classification] Naïve Bayes (0) | 2022.09.28 |
[Supervised Learning][Regression] Ridge Regression, Lasso Regression (0) | 2022.09.27 |