TIL_53 : Random Forest_1 : Bagging

JaHyeon Gu·2021년 11월 1일
0

Machine Learning

목록 보기
11/15
post-thumbnail

🙄 결정 트리와 앙상블


➡ 결정 트리

  • 결정 트리직관적이고 쉽게 해석할 수 있는 장점이 있는 반면 부정확하다는 단점 존재

그럼에도 결정 트리가 중요한 이유는
결정 트리를 응용하여 성능이 좋은 다른 모델을 만들 수 있음


➡ 앙상블 (ensemble)

  • 하나의 모델을 쓰는 대신, 수많은 모델들을 사용해 종합적인 판단을 하는 것
  • 수많은 모델들을 만들고 이 모델들의 예측을 합쳐서 종합적인 예측을 하는 기법



🙄 Random Forest


➡ Bagging_1 : 임의로 bootstrap 데이터 셋 만들기

  • 수많은 트리 모델들을 임의로 많이 만들어서 다수결 투표로 결과를 종합하는 알고리즘
  • bootstrap 데이터 셋을 만들어내고, 모델들의 결정을 종합해서 예측을 하는
    앙상블 기법을 bootstrap aggregating, 줄여서 bagging 이라고 부름

Bootstrapping

  • 갖고 있는 데이터 셋으로 다른 데이터 셋을 만들어내는 방법
  1. 기존의 데이터 셋에서 임의로 데이터 하나를 골라 새로운 데이터 셋에 추가한다
  2. 계속해서 임의로 하나의 데이터를 추가해 같은 크기의 데이터 셋을 임의로 만든다
  3. 여러번 추가된 데이터도 있을 수 있는 반면 한번도 추가되지 않은 데이터도 있을 수 있다
  • 이런 식으로 원래의 데이터 셋에서 임의로 새로운 데이터 셋을 만들어내는 방법이
    bootstrapping이고 이렇게 만들어진 데이터 셋을 bootstrap 데이터 셋이라고 함

Bootstrapping을 하는 이유

  • 앙상블은 수많은 다른 머신 러닝 모델들을 만들고
    이 모델들의 예측을 종합해서 예측을 하는 기법
  • 모델들을 다 똑같은 데이터 셋으로 학습시키면 다양하게 결과가 나오지 않고 비슷한 결과
  • 이를 방지하기 위한 한 가지 방법으로 임의로 만든 bootstrap 데이터 셋 사용

➡ Bagging_2 : 임의로 결정 트리 만들기

  • 여러 속성중 임의로 여러 속성을 골라 불순도를 계산해서
    가장 좋은 거로 root node의 질문으로 정함
  • 그 다음에도 똑같이 여러 속성을 골라 지니 불순도가 가장 낮은 것을 사용
  • 매 노드를 만들 때 임의로 만들기 때문에 수많은 서로 다른 결정 트리 탄생
  1. bootstrapping을 사용해서 임의로 데이터 셋을 만듦
  2. 결정 트리를 만들 때도 질문 노드들을 어느 정도는 임의로 만듦
  • 이 두 단계를 엄청 많이 반복해서 서로 조금씩 다른 100개의 결정 트리를 만들었다고 가정
  • bootstrap 데이터를 써서 엄청 많은 트리들을 임의로 만드는게 바로 Random Forest
  • 예측할 때는 만들어놓은 트리들의 예측을 다수결 투표로 종합해서 결정



🙄 scikit-learn으로 Random Forest 사용


profile
IWBAGDS

0개의 댓글

관련 채용 정보