Try   HackMD

랜덤 포레스트 (Random Forests)

도입

  • 누구의 언어영역 점수가 높을까?
    • 전교 1등
    • 반에서 10등 5명이 협의해서
      서로의 답이 다를 경우, 다수결로 답 정정
  • 랜덤 포레스트 특징
    • 의사결정나무 모델의 랜덤성을 보완한 모델로서,
      일반적으로 안정적인 성능을 보임
      • 전교 1등
        • 그 날의 컨디션에 따라 시험점수 다를 수 있음
      • 중위권 5명
        • 1명이 자꾸 틀려도 나머지 애들이 맞히면 대세에 영향 없음
        • 안정적임
    • 토론 대첩
      image
  • 일본인과 한국인의 얼굴 평균 (이미지 모핑)
    • 평균으로 회귀한 얼굴(랜덤 포레스트)이 더 잘생겼음
      • 일반적인 개인(로직 트리)에 비해
    • 특출난 나무(정우성) 제외
      image







결정 트리의 한계를 넘어서: 앙상블 기법과 랜덤 포레스트

  • 정의
    • 의사결정나무는 질문의 종류와 순서에 따라 다른 모양의 트리 구조를 가질 수 있음
    • 따라서 질문의 종류와 순서에 의한 영향을 줄이기 위하여
      여러 개의 의사결정나무를 만들고
      다수의 의사결정나무의 예측 결과를 토대로 최종 예측 결과를 판단
    • 이러한 알고리즘을 랜덤포레스트라고 함
  • 질문 종류와 순서에 따라 같은 데이터라도 다양한 로직트리 생성됨
  • 트리 하나만 의지하기보다 여러 트리를 모아서 숲을 만들자!!

image

출처 : 텐서 플로우 블로그, 2.3.6 결정 트리의 앙상블, Retrieved from https://tensorflow.blog/파이썬-머신러닝/2-3-6-결정-트리의-앙상블

  • 결정 트리(Decision Tree)가 모여 랜덤 포레스트(Random Forest)를 구성합니다.
  • 결정 트리 하나만으로도 머신러닝을 할 수 있습니다.
    • 하지만 결정 트리의 단점은 훈련 데이터에 오버피팅 되는 경향이 있음
    • 여러 개의 결정 트리를 통해 랜덤 포레스트를 만들면 오버피팅 되는 단점을 해결할 수 있음.
  • 예시
    • 건강의 위험도를 예측하기 위해서는 많은 요소를 고려해야 합니다. 성별, 키, 몸무게, 지역, 운동량, 흡연유무, 음주 여부, 혈당, 근육량, 기초 대사량 등 수많은 요소가 필요할 것입니다.
    • 수많은 요소(Feature)를 기반으로 건강의 위험도(Label) 를 예측한다면 분명 오버피팅이 일어날 것입니다.
    • 예를 들어 Feature가 30개일 때
      30개의 Feature를 기반으로 하나의 결정 트리를 만든다면 트리의 가지가 많아질 것이고,
      이는 오버피팅의 결과를 야기할 것
    • Solution : 랜덤 포레스트
      • 30개의 Feature 중 랜덤으로 5개의 Feature만 선택해서 하나의 결정 트리를 만들고,
        • 또 30개 중 랜덤으로 5개의 Feature를 선택해서 또 다른 결정 트리를 만들고
        • 이렇게 계속 반복하면 여러 개의 결정 트리를 만들 수 있음.
      • 결정 트리 하나마다 개별 예측 값을 내놓을 것.
        • 여러 결정 트리들이 내린 예측 값들 중 가장 많이 나온 값을 최종 예측값으로 정합니다.
        • 다수결의 원칙에 따름.
      • 이렇게 의견을 통합하거나 여러 가지 결과를 합치는 방식을 앙상블(Ensemble) 이라고 함.
        • 즉, 하나의 거대한 (깊이가 깊은) 결정 트리를 만드는 것이 아니라 여러 개의 작은 결정 트리를 만드는 것
        • 여러 개의 작은 결정 트리가 예측한 값들 중 가장 많은 값(분류일 경우) 혹은 평균값(회귀일 경우)을 최종 예측 값으로 정하게 됨.
        • 똑똑한 학생 한 명이 문제를 다 푸는 것이 아니라 5 명의 평범한 학생이 동시에 문제를 풀어서 각자의 정답을 통합하거나 합하는 셈.

image

  • 로직 트리
    • 각각의 로직 트리는 과적합되어 있음.
    • 경계가 다소 모호함.
  • 랜덤 포레스트
    • 5개의 결정 트리 경계를 평균 내어 만든 랜덤 포레스트의 경계는 보다 깔끔함.
  • 캐글 상위 랭커들 대부분 앙상블 적용
    • 팀명이 앙상블인 팀도 봤음







랜덤포레스트(Random Forest)의 개념과 특징

랜덤포레스트(Random Forest)는
의사 결정 나무(Decision Tree)를 개별 모형으로 사용하는
모형 결합 방법을 말한다.

랜덤포레스트는 데이터 특징차원의 일부만 선택하여 사용한다.
하지만 노드 분리모든 독립 변수들을 비교하여
최선의 독립 변수를 선택하는 것이 아니라
독립 변수 차원을 랜덤하게 감소시킨 다음
그 중에서 독립 변수를 선택한다.

이렇게 하면 개별 모형들 사이의 상관관계가 줄어들기 때문에
모형 성능의 변동이 감소하는 효과가 있다.

이러한 방법을 극단적으로 적용한 것이 Extremely Randomized Trees 모형으로
이 경우에는 각 노드에서 랜덤하게 독립 변수를 선택한다.

랜덤포레스트의 장점 중 하나는
독립 변수의 중요도(feature importance)를 계산할 수 있다는 점이다.

포레스트 안에서 사용된 모든 노드에 대해
어떤 독립 변수를 사용하였고
그 노드에서 얻은 information gain을 구할 수 있으므로
각각의 독립 변수들이 얻어낸 information gain의 평균을 비교하면
어떤 독립 변수가 중요한지를 비교할 수 있다.


















tags: Routine 22년