랜덤 포레스트는 결정 트리와 다르며, 결정 트리가 모여서 만들어진 숲(Forest) 같은 모델이라고 생각하시면 쉽습니다.

Z.1.1) 결정 트리 (Decision Tree) 란?

결정 트리는 이름 그대로 ‘의사 결정 규칙’을 나무(Tree) 구조로 도식화한 모델입니다. 데이터의 특징(feature)을 바탕으로 ‘예/아니오’ 질문을 반복하며 데이터를 분류하거나 값을 예측합니다.

  • 장점: 모델의 예측 과정을 직관적으로 이해하고 설명하기 쉽습니다. (높은 해석력)

  • 단점: 데이터의 작은 변화에도 구조가 크게 바뀔 수 있으며, 훈련 데이터에 과적합(Overfitting)되기 쉽습니다. 즉, 특정 데이터셋에만 잘 맞는 모델이 되어 새로운 데이터에 대한 예측 성능이 떨어질 수 있습니다.

Z.1.2) 랜덤 포레스트 (Random Forest) 란?

랜덤 포레스트는 앙상블(Ensemble) 학습 방법 중 하나로, 여러 개의 결정 트리를 만들어 그 예측을 종합하는 방식입니다.

하나의 똑똑한 전문가(결정 트리)에게만 의존하는 대신, 여러 명의 전문가(결정 트리들)에게 의견을 묻고 다수결로 결정하는 ‘집단 지성’의 원리를 이용하는 것과 같습니다.

랜덤 포레스트의 핵심은 이름에 있는 **‘랜덤(Random)‘**에 있습니다. 두 가지 랜덤 과정을 통해 다양한 트리들을 만듭니다.

  1. 데이터의 무작위 선택 (배깅, Bagging): 원본 훈련 데이터에서 무작위로 데이터를 샘플링하여 여러 개의 서브 데이터셋을 만듭니다. 각 트리는 이 서로 다른 데이터셋으로 학습합니다.

  2. 특징(Feature)의 무작위 선택: 각 트리의 노드에서 데이터를 분할할 때, 전체 특징 중에서 일부만 무작위로 선택하여 최적의 분할 기준을 찾습니다.

이렇게 만들어진 여러 개의 트리들이 각자 예측을 하고, 랜덤 포레스트는 이 예측들을 종합(분류는 투표, 회귀는 평균)하여 최종 결론을 내립니다.

Z.1.3) 결정 트리 Vs 랜덤 포레스트 핵심 차이점

구분결정 트리 (Decision Tree)랜덤 포레스트 (Random Forest)
모델 구조단일 나무 구조여러 개의 나무로 구성된 숲 구조 (앙상블)
과적합(Overfitting)발생하기 쉬움 (모델이 훈련 데이터에만 치우침)발생 가능성이 낮음 (여러 트리의 결과를 종합하여 과적합 방지)
성능 (정확도)일반적으로 더 낮음일반적으로 더 높음 (집단 지성의 힘)
해석력매우 높음 (시각화하여 규칙을 이해하기 쉬움)매우 낮음 (수많은 트리의 결정 과정을 일일이 파악하기 어려움)
학습 속도빠름 (트리 하나만 만들면 됨)느림 (여러 개의 트리를 만들어야 함)

Z.1.4) 면접 예상 질문 & 답변 Tip

Q. “랜덤 포레스트가 결정 트리에 비해 갖는 장점이 무엇인가요?”

A. “랜덤 포레스트는 여러 개의 결정 트리를 사용하는 앙상블 기법으로, 단일 결정 트리의 가장 큰 단점인 과적합 문제를 크게 개선할 수 있습니다. 데이터와 변수를 무작위로 선택하여 다양한 트리를 만들기 때문에 일반화 성능이 뛰어나고, 결과적으로 더 높은 예측 정확도를 가집니다. 따라서 해석이 아주 중요한 상황이 아니라면, 일반적으로 결정 트리보다 더 안정적이고 좋은 성능을 기대할 수 있습니다.”

Q. “그렇다면 랜덤 포레스트의 단점은 무엇일까요?”

A. “랜덤 포레스트는 여러 개의 트리를 만들어야 하므로 단일 결정 트리에 비해 학습 시간이 더 오래 걸리고 메모리 사용량도 많다는 단점이 있습니다. 또한, 수많은 트리의 예측 과정을 종합하기 때문에 결정 트리처럼 왜 그런 예측 결과가 나왔는지 직관적으로 해석하기 어려운, ‘블랙박스’ 모델에 가깝다는 단점도 있습니다.”


랜덤 포레스트는 샘플(데이터)과 특성(Feature)을 둘 다 무작위로 샘플링합니다. 이 두 가지 ‘무작위성’이 랜덤 포레스트의 핵심 원리입니다.

각각을 나누어 설명해 드릴게요.

Z.1.5) 데이터 샘플링 (행 샘플링) - 배깅 (bagging)

  • 어떻게?: 원본 훈련 데이터셋에서 중복을 허용하여 무작위로 데이터를 샘플링합니다. 이것을 **부트스트랩 샘플링(Bootstrap Sampling)**이라고 합니다.

  • 예시: 1000개의 데이터 샘플이 있다면, 이 중에서 1000개를 무작위로 복원 추출(중복 허용)하여 첫 번째 트리를 위한 훈련 데이터셋을 만듭니다. 같은 방식으로 두 번째, 세 번째 트리를 위한 데이터셋을 각각 만듭니다. 이 과정에서 어떤 샘플은 여러 번 뽑히고, 어떤 샘플은 한 번도 뽑히지 않을 수 있습니다.

  • 목적: 각 트리들이 서로 다른 데이터셋으로 학습하게 하여, 개별 트리가 특정 데이터에 과적합되는 것을 방지하고 다양성을 확보하기 위함입니다. 이는 숲 전체의 일반화 성능을 높여줍니다.

Z.1.6) 특성 샘플링 (열/차원 샘플링) - 무작위 노드 분할

  • 어떻게?: 개별 트리가 노드(node)에서 데이터를 분할할 때, 전체 특성(feature) 중에서 일부만 무작위로 선택합니다. 그리고 선택된 특성들 안에서만 최적의 분할 기준을 찾습니다.

  • 예시: 데이터에 10개의 특성(나이, 소득, 직업 등)이 있다면, 트리의 특정 분기점에서 10개 모두를 고려하는 것이 아니라, 무작위로 3~4개만 뽑아서 그중에서 가장 좋은 분할 기준을 찾는 방식입니다.

  • 목적: 이것이 랜덤 포레스트를 단순 배깅과 구분 짓는 가장 중요한 특징입니다. 만약 특정 예측 변수가 매우 강력하다면, 대부분의 트리가 모두 그 변수를 상위 노드에서 사용하게 되어 트리들이 서로 비슷해지는(상관관계가 높아지는) 문제가 생깁니다. 특성 샘플링은 이러한 트리 간의 상관관계를 줄여 숲의 다양성을 극대화하고, 개별 트리의 약점을 서로 보완하도록 만들어줍니다.

Z.1.7) 핵심 정리

샘플링 종류대상방법목적
데이터 샘플링데이터 행 (Sample)배깅 (Bagging) / 부트스트랩트리의 다양성 확보, 과적합 방지
특성 샘플링데이터 열 (Feature)무작위로 특성 선택 후 노드 분할트리 간의 상관관계 감소, 다양성 극대화