nyunu

[데이터 마이닝] 앙상블(ensemble) - Random Forest / multi class 본문

Data mining

[데이터 마이닝] 앙상블(ensemble) - Random Forest / multi class

여뉴누 2023. 6. 18. 19:39
728x90
강의 출처) 2023-1 숙명여자대학교 소프트웨어학부 강의 "데이터마이닝및분석", 이기용 교수님

Random Forest

< KEY >

: decision tree를 여러 개 랜덤하게 사용하여 만든 것
-> 어떻게 랜덤하게 decision tree를 여러 개 만드느냐가 포인트 !

  • bagging과 동일하게 샘플링
  • splitting feature를 잡을 때,
    p개의 feature를 랜덤하게 먼저 뽑고 그 중에서 베스트를 뽑아서 사용
    -> 이때문에 모두 다른 트리가 되는 것

=> random forest는 training instances와 features를 모두 새롭게 조합하여 사용

 

1. 기본 과정

(1) n개의 instance와 d개의 feature를 가진 training set D가 있다고 가정
(2) bagging의 샘플링과 동일한 방식으로 샘플 추출
(3) Decision tree (= base classifier)를 샘플을 사용하여 학습

  • Decision tree의 각 노드마다 p개의 feture를 랜덤하게 선택
  • 선택한 p개의 feature 중 가장 데이터를 잘 분류하는 feature를 선택해 분류
  • 위의 과정을 모든 leaf node가 퓨어해질 때까지 반복
    • 각 base classifier를 오버피팅 시키는 과정
    • 앙상블 성능 향상을 위해서는 bias가 낮고 variance가 높아야 하니까 !

=> (1) ~ (3) 을 decision tree (= base classifier)의 개수만큼 반복

(4) prediction -> majority voting하여 결과 도출

 

2. Bagging의 한계 및 Random Forest와의 차이점

1) Bagging의 한계

  • 변수가  이렇게 있다고 가정
  • 만약  가 매우매우 중요한 변수다라고 하면
  • 모든 base classifier에서 attribute test condition으로  가 선택됨
  • 그렇게 되면 각 모델이 다르게 나올 수가 없음
  • 왜 이렇게 되냐 ? -> bagging은 data object만을 랜덤하게 선택하기 때문

2) Bagging과 Random Forest 비교

  • bagging의 한계를 극복한 것이 random forest
  • 공통점 : 각 트리마다 다른 training data의 샘플을 사용
  • 차이점
    best splitting criterion을 선택시
    • bagging : 전체 feature에서 선택
    • random forest : 랜덤하게 선택한 p개의 feature 중에서만 선택
      -> 각 tree가 모두 다르게 나오는 이유

 

3. [정리] Random Forest base classifier 특징

  • 각각 독립적인 데이터 셋을 사용
  • 분류때마다 랜덤하게 선택된 다른 feature의 subset을 사용

=> 각 base classifier는 상관관계가 없다 = 서로 모양이 매우 다르다

  • 학습 능력이 좋고 상관관계가 없는 트리의 예측을 모음으로써 낮은 bias에 대한 부정적인 영향 없이 variance를 줄일 수 있음
  • 오버피팅에 로버스트
    -> 잘못된 결과가 있더라도 다수결을 사용하기 때문에
  • 높은 차원에서도 계산적으로 빠르고 로버스트
    -> feature가 아무리 많아도 p개만 선택하고 p개를 대상으로만 계산하니까

 

4. Hyper-parameter "p"

: 각 노드에서 랜덤하게 선택할 feature의 개수

  • p가 작으면
    • 트리 간의 상관관계를 줄일 수 있음
      -> 왜냐면 p가 작을수록 분류 기준으로 다른 feature가 선택될 가능성이 높아지니까
    • 각 트리의 성능이 떨어질 수 있음
      -> 왜냐면 p가 작으면 선택할 수 있는 변수의 폭이 줄어드는 거니까
      -> 굉장이 이상한 변수들만 선택되었다고 하면
      -> 억지로 이상한 변수들 중에서 덜 이상한 변수를 선택해서 예측을 하겠지
      -> 결국 트리의 성능저하로 이어짐
  • p가 크면
    • 트리 간의 상관관계가 높아질 수 있음
      -> p가 최대치가 되면 결국 그게 bagging인거니까
      -> 만약에 매우매우 영향력이 큰 변수가 포함되어 있다 했을 때 p가 크면
      -> 분류 기준 변수로 같은 변수들만 선택되어서
      -> 결국 트리의 모양들이 다 비슷해짐
    • 각 트리의 성능은 높아짐
      -> 선택지가 많아지면 좋은 변수가 선택 될 가능성도 높아지니까
  • p값 설정 예시
     OR 

 

5. Adaboost VS Random Forest

  • 보통은 성능 비슷 -> 굉장히 좋음
  • Adaboost는 오버피팅의 위험이 있는 반면 Random Forest는 없음
  • 그래서 Random Forest는 성능이 진짜진짜 좋은 모델 중 하나야 !

 


Multiclass Problem

1. One-Against-Rest (or All)

  • a, b, c 클래스가 있다고 할 때
  • a인것 vs 아닌 것 (b, c) 분류
  • b인것 vs 아닌 것 (a, c) 분류
  • c인것 vs 아닌 것 (a, b) 분류

=> 결과적으로 가장 높은 확률을 보이는 것을 클래스로 채택

2. One-Against-One

  •  개의 binary classifier를 만들고
  • 각 classifier마다 예측값을 낸 후
  • 다수결로 결과값 선택
728x90