Random Forest

2023. 5. 27. 15:03·DS & ML/Machine Learning

랜덤 포레스트, RandomForest

랜덤 포레스트(Random Forest): 결정 트리의 단점인 오버피팅 문제를 완화시켜 주는 발전된 형태의 트리 모델

  • 랜덤으로 독립적인 트리를 여러 개 만들어서 예측
  • 여러 모델을 활용하여 하나의 모델을 이루는 기법을 앙상블이라 함
장점 단점
결정 트리와 마찬가지로, 아웃라이어에 거의 영향을 받지 않음 학습 속도가 상대적으로 느림
선형/비선형 데이터에 상관없이 잘 작동함 수많은 트리를 동원하기 떄문에 모델에 대한 해석이 어려움
  • 종속변수가 연속형 데이터와 범주형 데이터인 경우 모두 사용가능
  • 아웃라이어가 문제가 되는 경우 선형 모델보다 좋은 대안이 될 수 있음
  • 오버피팅 문제로 결정트리를 사용하기 어려울 때 사용 가능

 

코드

from sklearn.ensemble import RandomForestRegressor
model = RandomForestRegressor(random_state=100)
model.fit(X_train, y_train)
pred = model.predict(X_test)

 

하이퍼파라미터

  • n_estimator: 랜덤 포레스트를 구성하는 결정 트리의 개수(기본값=100)
  • max_depth: 각 트리의 최대 깊이(숫자가 낮을수록 오버피팅을 피할 수 있으나, 언더피팅의 위험이 올라감)
  • min_samples_split: 해당 노드를 나눌 것인지 말 것인지를 노드 데이터 수를 기준으로 판단(이 매개변수에 지정된 숫자보다 적은 수의 데이터가 노드에 있으면 더는 분류하지 않음, 기본값=2)
  • n_jobs: 병렬 처리에 사용되는 CPU 코어 수(많은 코어를 사용할수록 속도는 상승하고 -1을 입력하면 모든 코어를 사용, 기본값=None)

 

모델 이해

랜덤 포레스트는 결정 트리의 집합체로 다양한 트리의 의견을 반영하기 때문에 오버피팅 위험을 낮출 수 있음

  • 랜덤 포레스트가 트리를 만들 때는 데이터 전체를 사용하지 않고 매번 다른 일부의 데이터를 사용하여 다른 트리를 만들어냄
  • 당연히 일부 데이터만 사용하면 전체 데이터를 사용한 결과보다 예측력이 떨어지지만, 예측력이 떨어지는 수많은 트리들이 함께 모여 중윗값을 찾아내면 오버피팅을 막는데 효율적임

랜덤 포레스트가 일부 데이터를 취하는 기준

  1. 데이터의 행 기준 - 매번 약 2/3에 해당하는 데이터만 사용
  2. 데이터의 열 기준 - 일부의 변수들만 매번 다르게 추출하여 사용

최종 예측값

  • 각 트리의 예측값을 기반으로 만들어짐
  • 회귀 문제: 연속형 변수를 예측하기 떄문에, 각 트리에서 만들어낸 예측값들의 평균값을 최종 예측값으로 사용
  • 분류 문제: 각 트리에서 예측한 값들 중 최다 투푯값으로 예측값 결정

 

참고: 데싸노트의 실전에서 통하는 머신러닝

 

GitHub - dduniverse/ML-study: <데싸노트의 실전에서 통하는 머신러닝> 실습 노트북

<데싸노트의 실전에서 통하는 머신러닝> 실습 노트북. Contribute to dduniverse/ML-study development by creating an account on GitHub.

github.com

 

저작자표시 (새창열림)
'DS & ML/Machine Learning' 카테고리의 다른 글
  • LightGBM
  • XGBoost
  • Decision Tree
  • Naive Bayes
dduniverse
dduniverse
  • dduniverse
    dduniverse
    dduniverse
  • 전체
    오늘
    어제
    • 분류 전체보기 (243)
      • Algorithm (123)
        • 알고리즘 이론 (8)
        • 백준 (19)
        • 프로그래머스 (83)
        • 구름 알고리즘 먼데이 챌린지 (13)
      • 빅데이터분석기사 (10)
        • 통계 (4)
        • 실기 (6)
      • KT에이블스쿨 (26)
      • FrontEnd (11)
        • React (5)
        • 기타 (6)
      • BackEnd (18)
        • Django (15)
        • Spring (3)
      • DS & ML (11)
        • Machine Learning (9)
        • Kaggle (2)
      • TIL (44)
        • python (22)
        • javascript (3)
        • 오류해결 (10)
        • 기타 (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 관리
    • 글쓰기
  • 링크

  • 인기 글

  • hELLO· Designed By정상우.v4.10.0
dduniverse
Random Forest

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.