랜덤 포레스트
랜덤 포레스트 (RF)는 각 결정 트리가 특정 랜덤 노이즈로 학습된 결정 트리의 앙상블입니다. 랜덤 포레스트는 결정 트리 앙상블에서 가장 많이 사용되는 형태입니다. 이 단원에서는 독립적인 결정 트리를 만들어 효과적인 랜덤 포레스트를 빌드할 확률을 높이는 몇 가지 기법을 설명합니다.
배깅
배깅 (bootstrap aggregating)은 학습 세트에 있는 예시의 무작위 하위 집합에서 각 결정 트리를 학습시키는 것을 의미합니다. 즉, 랜덤 포레스트의 각 결정 트리는 다른 예시 하위 집합에서 학습됩니다.
배깅은 독특합니다. 각 결정 트리는 원래 학습 세트에서와 동일한 수의 예로 학습됩니다. 예를 들어 원래 학습 세트에 60개의 예시가 포함되어 있는 경우 각 결정 트리는 60개의 예시에 대해 학습됩니다. 하지만 배깅은 이러한 예의 하위 집합 (일반적으로 67%)에 대해서만 각 결정 트리를 학습시킵니다. 따라서 하위 집합의 예 40개 중 일부는 지정된 결정 트리를 학습시키는 동안 재사용해야 합니다. 이러한 재사용을 '교체 포함' 학습이라고 합니다.
예를 들어 표 6은 배깅이 3개의 결정 트리에 6개의 예를 배포하는 방법을 보여줍니다. 다음 사항에 유의하세요.
- 각 결정 트리는 총 6개의 예시로 학습됩니다.
- 각 결정 트리는 서로 다른 예시 세트로 학습됩니다.
- 각 결정 트리는 특정 예를 재사용합니다. 예를 들어 예 4는 학습 결정 트리 1에서 두 번 사용되므로 예 4의 학습된 가중치는 결정 트리 1에서 사실상 두 배가 됩니다.
표 6. 3개의 결정 트리에 6개의 학습 예시 포함 각 숫자는 지정된 결정 트리(1~3)의 학습 데이터 세트에서 지정된 학습 예(#1~6)가 반복되는 횟수를 나타냅니다.
학습 예시 | ||||||
---|---|---|---|---|---|---|
#1 | #2 | #3 | #4 | #5 | #6 | |
원본 데이터 세트 | 1 | 1 | 1 | 1 | 1 | 1 |
결정 트리 1 | 1 | 1 | 0 | 2 | 1 | 1 |
결정 트리 2 | 3 | 0 | 1 | 0 | 2 | 0 |
결정 트리 3 | 0 | 1 | 3 | 1 | 0 | 1 |
배깅에서 각 결정 트리는 거의 항상 원래 학습 세트에 있는 총 예시 수에 대해 학습됩니다. 각 결정 트리를 예시 또는 더 적은 예시로 학습시키면 랜덤 포레스트의 품질이 저하되는 경향이 있습니다.
원본 랜덤 포레스트 논문에는 없지만 예 샘플링이 '대체 없이' 이루어지는 경우도 있습니다. 즉, 학습 예시가 결정 트리 학습 세트에 두 번 이상 존재할 수 없습니다. 예를 들어 위 표에서 모든 값은 모두 0 또는 1입니다.
bootstrap_training_dataset=False
할당을 사용하여 대체 없이 학습을 사용 설정할 수 있습니다.
속성 샘플링
속성 샘플링은 사용 가능한 모든 특성에 대해 최상의 조건을 찾는 대신 각 노드에서 특성의 무작위 하위 집합만 테스트한다는 의미입니다. 테스트된 특성 세트는 결정 트리의 각 노드에서 무작위로 샘플링됩니다.
다음 결정 트리는 속성 / 특성 샘플링을 보여줍니다. 여기서 결정 트리는 5가지 특성 (f1-f5)에 대해 학습됩니다. 파란색 노드는 테스트된 특성을 나타내고 흰색 노드는 테스트되지 않은 특성을 나타냅니다. 조건은 가장 잘 테스트된 특성 (빨간색 윤곽선으로 표시)으로 구성됩니다.
그림 21. 속성 샘플링
속성 샘플링의 비율은 중요한 정규화 초매개변수입니다. 위 그림에서는 약 3⁄5의 비율을 사용했습니다. 많은 랜덤 포레스트 구현은 기본적으로 회귀 특성의 1/3과 분류를 위한 sqrt(특성 수)를 테스트합니다.
TF-DF에서 다음 초매개변수는 속성 샘플링을 제어합니다.
num_candidate_attributes
num_candidate_attributes_ratio
예를 들어 num_candidate_attributes_ratio=0.5
이면 각 노드에서 특성의 절반이 테스트됩니다.
결정 트리 정규화 사용 중지
랜덤 포레스트의 개별 결정 트리는 프루닝 없이 학습됩니다. 과적합 및 프루닝을 참고하세요. 이로 인해 예측 품질이 낮은 지나치게 복잡한 트리가 생성됩니다. 개별 트리를 정규화하는 대신 트리가 앙상블링되어 더 정확한 전체 예측을 생성합니다.
랜덤 포레스트의 학습 및 테스트 정확성이 다를 것으로 expect. 랜덤 포레스트의 학습 정확성은 일반적으로 훨씬 더 높습니다 (때로는 100%와 같을 때도 있음). 그러나 랜덤 포레스트에서 학습 정확도가 매우 높은 것은 정상이며 랜덤 포레스트가 과적합되었음을 나타내는 것은 아닙니다.
임의성의 두 가지 소스 (배깅 및 속성 샘플링)는 결정 트리 간의 상대적 독립성을 보장합니다. 이러한 독립성은 개별 결정 트리의 과적합을 수정합니다. 따라서 앙상블이 과적합되지 않습니다. 다음 단원에서 이 직관적이지 않은 효과에 대해 설명하겠습니다.
순수 랜덤 포레스트는 리프당 최대 깊이 또는 최소 관찰 횟수 없이 학습됩니다. 실제로는 리프당 최대 심도와 최소 관찰 수를 제한하는 것이 좋습니다. 기본적으로 많은 임의 포레스트가 다음 기본값을 사용합니다.
- 최대 깊이 ~16
- 리프당 최소 관찰 횟수는 최대 5입니다.
이러한 초매개변수를 조정할 수 있습니다.
노이즈의 선명도
무작위 노이즈가 랜덤 포레스트의 품질을 개선하는 이유는 무엇일까요? 무작위 노이즈의 이점을 설명하기 위해 그림 22에서는 타원 패턴을 사용하는 간단한 2차원 문제의 몇 가지 예에 대해 학습된 전통적인(프루닝) 결정 트리와 무작위 포레스트의 예측을 보여줍니다.
타원 패턴은 결정 트리 및 결정 포레스트 알고리즘이 축 정렬 조건으로 학습하기가 매우 어렵기 때문에 좋은 예가 됩니다. 프루닝 결정 트리는 랜덤 포레스트와 동일한 수준의 예측 품질을 얻을 수 없습니다.
그림 22. 프루닝된 단일 결정 트리에서 생성된 정답과 예측 비교 및 랜덤 포레스트에서 생성된 예측 비교
다음 플롯은 랜덤 포레스트에서 처음 세 개의 프루닝되지 않은 결정 트리의 예측을 보여줍니다. 즉, 결정 트리는 모두 다음의 조합으로 학습됩니다.
- 배깅
- 속성 샘플링
- 가지치기 사용 중지
이러한 결정 트리 3개의 개별 예측은 위 그림에서 프루닝된 결정 트리의 예측보다 낮습니다. 그러나 개별 결정 트리의 오류 간에는 약한 상관관계가 있기 때문에 3개의 결정 트리가 앙상블로 결합되어 효과적인 예측을 생성합니다.
그림 23. 효과적인 앙상블을 구축하는 프루닝되지 않은 결정 트리 3개
랜덤 포레스트의 결정 트리는 프루닝되지 않으므로 랜덤 포레스트 학습에는 검증 데이터 세트가 필요하지 않습니다. 실제로는, 특히 소규모 데이터 세트의 경우 사용 가능한 모든 데이터를 바탕으로 모델을 학습시켜야 합니다.
랜덤 포레스트를 학습시킬 때 더 많은 결정 트리가 추가될수록 오류가 거의 항상 감소합니다. 즉, 모델의 품질이 거의 항상 향상됩니다. 예. 결정 트리를 추가하면 거의 항상 랜덤 포레스트의 오류가 줄어듭니다. 즉, 더 많은 결정 트리를 추가해도 랜덤 포레스트가 과적합되지 않습니다. 어느 시점에는 모델의 개선이 멈춥니다. Leo Breiman은 "Random Forest는 나무가 더 많이 추가되기 때문에 과적합되지 않습니다"라고 유명한 말을 남겼습니다.
예를 들어 다음 플롯은 더 많은 결정 트리가 추가될 때 랜덤 포레스트 모델의 테스트 평가를 보여줍니다. 정확도는 약 0.865 정체가 될 때까지 급격히 개선됩니다. 그러나 결정 트리를 더 추가한다고 해서 정확성이 떨어지는 것은 아닙니다. 즉, 모델이 과적합되지는 않습니다. 이 동작은 대부분 항상 true이며 초매개변수와는 별개입니다.
그림 24. 랜덤 포레스트에 더 많은 결정 트리가 추가됨에 따라 정확성이 일정하게 유지됩니다.