Ultralytics YOLO27: 대기자 명단에 등록하세요.
YOLO 라이선스 받기
Ultralytics 용어집으로 돌아가기

Random Forest

랜덤 포레스트는 부트스트랩 샘플과 무작위 특성 분할을 사용해 각각 학습한 여러 의사결정 트리의 결과를 평균 내어 분류와 회귀를 수행합니다.

랜덤 포레스트는 동일한 데이터의 무작위 변형을 사용해 여러 결정 트리를 학습시키고 예측을 결합하는 지도 학습 알고리즘입니다. 분류에서는 다수결 또는 평균 클래스 확률을, 회귀에서는 평균을 사용합니다. Leo Breiman은 이전의 배깅 기법을 바탕으로 2001년 논문 Random Forests에서 이 방법을 설명했습니다. 단일 심층 트리는 학습 데이터 행을 암기하므로 데이터가 조금만 바뀌어도 예측이 크게 달라집니다. 서로 다른 실수를 하는 수백 개 트리의 예측을 평균하면 이러한 분산이 상당 부분 상쇄되므로 랜덤 포레스트는 테이블형 데이터의 가장 신뢰할 수 있는 기본 모델 중 하나입니다. 특성 스케일링이 필요하지 않고 특성 간 비선형 상호작용을 처리하며, 트리 수를 늘리면 테스트 오류가 안정화됩니다.

랜덤 포레스트의 작동 방식#

랜덤 포레스트는 트리 학습에 두 가지 무작위성을 추가합니다. 앙상블은 구성 요소가 서로 다른 실수를 할 때만 효과가 있기 때문이며, 그런 다음 트리들을 결합합니다:

  • 부트스트랩 집계(bagging): 각 트리는 학습 데이터에서 복원 추출한 행 집합인 부트스트랩 표본으로 학습하며, 표본 크기는 원본 데이터와 같습니다. 일부 행은 여러 번 포함되고, 행의 약 37%(1/e 비율)는 각 표본에서 제외됩니다.
  • 무작위 특성 하위 집합: 각 분할에서 트리는 무작위로 선택한 일부 특성만 고려합니다. Scikit-learn 분류기는 기본적으로 특성 수의 제곱근을 사용하므로 특성이 100개인 데이터셋에서는 분할마다 후보가 10개이며, 회귀기는 기본적으로 모든 특성을 고려합니다. 따라서 지배적인 특성이 모든 트리의 최상위에 놓이지 않아 트리 간 상관성이 낮아집니다.
  • 집계: Breiman의 원래 방법은 트리의 다수결을 사용합니다. Scikit-learn 구현은 대신 모든 트리의 클래스 확률을 평균하며, 회귀 포레스트는 트리의 수치 예측값을 평균합니다.

트리는 깊게 성장시키고 가지치기하지 않으므로 각각의 편향은 낮고 분산은 높습니다. 상관성이 낮은 여러 트리의 예측을 평균하면 편향을 낮게 유지하면서 분산을 줄여 편향-분산 트레이드오프에서 유리한 방향으로 이동할 수 있습니다. 트리는 서로 독립적이므로 CPU 코어에서 병렬로 학습할 수도 있습니다.

OOB 오류와 특성 중요도#

트리가 한 번도 보지 않은 행은 내장 테스트 세트 역할을 합니다. OOB 점수는 부트스트랩 표본에서 해당 행이 제외된 트리만 사용해 각 학습 행을 예측하므로, 별도의 검증 세트를 따로 남겨두지 않고도 보지 않은 데이터에 대한 정확도를 추정합니다. 포레스트는 특성 중요도도 보고합니다. 기본 불순도 기반 중요도는 모든 분할에서 각 특성이 불순도를 얼마나 줄이는지 측정하며, 고유값이 많은 특성에 유리합니다. 따라서 특성 순위를 정할 때는 특성 하나를 섞은 뒤 점수가 얼마나 하락하는지 측정하는 순열 중요도가 더 신뢰할 수 있습니다.

이 예제는 내장 유방암 데이터셋에서 완전히 성장한 트리 하나와 scikit-learn 랜덤 포레스트를 5겹 교차 검증으로 비교한 다음 포레스트의 OOB 점수를 확인합니다:

from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeClassifier

# 569 tumors described by 30 numeric features, labeled malignant or benign
X, y = load_breast_cancer(return_X_y=True)

# One fully grown tree vs. a forest of 300 trees on bootstrap samples
tree = DecisionTreeClassifier(random_state=0)
forest = RandomForestClassifier(n_estimators=300, oob_score=True, random_state=0)

# Compare 5-fold cross-validated accuracy
print(f"Single tree: {cross_val_score(tree, X, y, cv=5).mean():.3f}")
print(f"Forest:      {cross_val_score(forest, X, y, cv=5).mean():.3f}")

# Out-of-bag score: each row is predicted only by trees that never trained on it
forest.fit(X, y)
print(f"OOB score:   {forest.oob_score_:.3f}")

스크립트는 단일 트리에서 0.917, 포레스트에서 0.963, OOB 점수에서 0.965를 출력합니다. 포레스트는 트리의 오류율을 8.3%에서 3.7%로 낮추며, OOB 추정치는 한 번의 학습 실행에서 얻은 교차 검증 정확도와 0.002 이내로 일치합니다.

실제 적용 사례#

  • 신용 위험 및 사기 탐지: 은행은 소득, 계좌 사용 기간, 소비 패턴 등의 테이블형 기록을 바탕으로 대출 신청과 거래의 위험 점수를 산출하며, 포레스트의 확률 출력값을 사용해 의사결정 임계값을 정합니다.
  • 의료 위험 예측: 임상 모델은 환자 기록을 바탕으로 재입원 등의 결과를 예측하며, 순열 중요도를 통해 각 예측에 영향을 주는 측정값을 확인합니다.
  • 위성 이미지 분석: 랜덤 포레스트는 오랫동안 토지 피복 매핑에 사용되어 왔으며, 스펙트럼 밴드 값과 식생 지수를 사용해 각 픽셀이나 필드를 분류합니다.
  • 작물 수확량 모델링: YOLO26 탐지기는 필드 이미지에서 과일이나 식물을 세며, 객체당 탐지 결과 하나를 생성합니다. 필지별 개수는 토양 및 기상 측정값과 함께 랜덤 포레스트의 열 데이터로 입력되어 수확량을 예측합니다.
  • 단일 결정 트리: 트리는 if-then 규칙 집합으로 이해하기 쉽지만, 데이터가 조금만 달라져도 완전히 다른 트리가 만들어질 수 있습니다. 포레스트는 가독성을 포기하는 대신 분산을 크게 낮춥니다.
  • 그래디언트 부스팅: XGBoost, LightGBM, CatBoost는 얕은 트리를 차례로 구축하며, 각 트리는 이전 트리의 오류를 보정합니다. 부스팅은 튜닝 후 테이블형 데이터 벤치마크에서 더 높은 점수를 얻는 경우가 많지만, 랜덤 포레스트는 독립적인 트리를 병렬로 학습하며 기본 설정만으로도 좋은 성능을 냅니다.
  • 테이블형 파운데이션 모델: 사전 학습된 트랜스포머는 데이터셋별로 모델을 학습하지 않고 단일 순전파로 새 테이블을 예측하며, 이제 작은 테이블에서는 튜닝된 트리 앙상블과 경쟁하는 성능을 보입니다.
  • 극도로 무작위화된 트리: 각 후보 특성에 대해 최적의 임계값을 검색하는 대신 무작위 임계값 하나를 뽑고, 이렇게 무작위로 분할한 결과 중 최선의 것을 선택합니다. Scikit-learn은 기본적으로 부트스트랩 표본 추출 없이 전체 데이터셋으로 이를 학습시키며, 임계값 검색을 생략하므로 같은 크기의 랜덤 포레스트보다 빠르게 학습할 수 있습니다.

솔루션 살펴보기

스포츠 분야의 컴퓨터 비전

스포츠 분야의 컴퓨터 비전

Ultralytics YOLO가 선수 및 공 추적, 경기력 분석, 코칭 인사이트, 선수 재활을 통해 스포츠 비전을 구현하는 방법을 알아보세요.
자세히 알아보기
항공 이미지 컴퓨터 비전

항공 이미지 컴퓨터 비전

Ultralytics YOLO를 활용해 드론 및 항공 이미지를 농업, 양식업, 보전, 지리 공간 분석을 위한 실시간 인사이트로 전환하세요.
자세히 알아보기
항공우주 분야의 컴퓨터 비전

항공우주 분야의 컴퓨터 비전

Ultralytics YOLO를 활용해 항공기 검사, 활주로 FOD 감지, 공항 지상 운영, 복합재 결함 감지 등 항공우주 분야에 컴퓨터 비전을 적용하세요.
자세히 알아보기
보안 분야의 컴퓨터 비전

보안 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 모든 시설을 보호하세요. Vision AI는 경계 모니터링, 위협 감지, 번호판 인식, 작업장 안전을 지원합니다.
자세히 알아보기
로보틱스 분야의 컴퓨터 비전

로보틱스 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 더 스마트한 머신을 구현하세요. 로보틱스 분야의 Vision AI는 자율 주행, 인식, 객체 추적, 실시간 제어를 지원합니다.
자세히 알아보기
물류 분야의 컴퓨터 비전

물류 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 물류를 간소화하세요. 비전 AI는 화물 검사, 분류, 차량 추적, 실시간 창고 안전 모니터링을 지원합니다.
자세히 알아보기
리테일 분야의 컴퓨터 비전

리테일 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 리테일의 새로운 가능성을 열어 보세요. 비전 AI는 재고 추적, 선반 모니터링, 대기열 관리, 더욱 심층적인 고객 인사이트를 지원합니다.
자세히 알아보기
의료 분야의 컴퓨터 비전

의료 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 의료 솔루션을 구축하세요. 의료 분야의 비전 AI는 의료 영상 판독을 가속화하고, 진단을 개선하며, 환자 모니터링을 지원합니다.
자세히 알아보기
제조 분야의 컴퓨터 비전

제조 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 제조 공정을 최적화하세요. 비전 AI는 품질 관리, 결함 탐지, PPE 규정 준수, 조립 라인 자동화를 지원합니다.
자세히 알아보기
자동차 분야의 컴퓨터 비전

자동차 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 자동차 분야에 컴퓨터 비전을 적용하세요. 비전 AI는 도로 안전, 운전자 지원, 차량 자동화를 개선해 더 스마트한 도로를 구현합니다.
자세히 알아보기
농업 분야의 컴퓨터 비전

농업 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 스마트 농업에 비전 AI를 도입하세요. 작물 모니터링, 가축 추적, 정밀 농업을 지원하여 더 높은 수확량과 더 스마트한 농업을 실현합니다.
자세히 알아보기

함께 AI의 미래를 만들어 가세요!

머신러닝의 미래와 함께 여정을 시작하세요