본문 바로가기
머신러닝/개념익히기

ML 앙상블 Ensemble- 랜덤포레스트, RandomForest

by ADELA_J 2023. 11. 2.

 

* 잠깐 짚고넘어가는 배깅 (Bagging)

- 같은 알고리즘으로 여러 개의 분류기를 만들어서 보팅으로 최종 결정하는 알고리즘

 

<랜덤포레스트>

- 배깅의 대표적인 알고리즘

- 앙상블 알고리즘 중 비교적 빠른 수행 속도, 높은 예측 성능을 보이고 있음.

- 기반 알고리즘 : 결정트리, 쉽고 직관적인 장점을 그대로 가지고 있음. 

   > 배깅의 앙상블 알고리즘은 대부분 결정 트리 알고리즘을 기반 알고리즘으로 채택

 

- 여러 개의 결정 트리 분류기가 전체 데이터에서 배깅 방식으로 각자의 데이터를 샘플링해 개별적으로 학습한 뒤 

최종적으로 모든 분류기가 보팅을 통해 예측 결정

 

출처 :https://velog.io/@jochedda/랜덤-포레스트-Random-Forest

 

<부트스트래핑 분할 방식, bootstrapping)

- 개별 트리가 학습하는 데이터 세트는 전체 데이터에서 일부가 중첩되게 샘플링된 데이터 세트

- 여러 개의 데이터 세트를 중첩되게 분리하는 것을 의미.

  > 그래서 bootstrap aggregating 의 줄임말 : Bagging

 > 원래 통계학에서 여러 개의 작은 데이터 세트를 임의로 만들어 개별 평균의 분포도를 측정하는 등의 목적을 위한 샘플링 방식을 지칭

 

<랜덤 포레스트의 서브세트 Subset>

- 부트스트래핑으로 데이터가 임의로 만들어진 것

- 서브세트의 데이터 건수는 전체 데이터 건수와 동일, 개별 데이터가 중첩되어 만들어짐

ex. 원본 데이터 건수가 10개인 학습 데이터 세트에 3개의 결정 트리 기반으로 랜덤포레스트를 학습하려고

n_estimators=3으로 하이퍼 파라미터를 부여하면 다음과 같이 서브세트 가 만들어짐

출처 :&nbsp;https://roytravel.tistory.com/51

 

▶ 이렇게 데이터가 중첩된 개별 데이터 세트에 결정 트리 분류기를 각각 정용하는 것

   : 랜덤 포레스트

- 사이킷런 , RandomForestClassifier 클래스.

사실 의사결정트리로 했을때도 0.933 나왔는데.. 앞에서 말했듯이 항상 높지만은 않다^^... 데이터수도 적고...

 

<랜덤 포레스트 하이퍼 파라미터 및 튜닝>

- 트리 기반의 앙상블 알고리즘 단점 : (굳이굳이 뽑자면) 하이퍼 파라미터가 많고, 튜닝을 위한 시간이 오래걸린다.

   > 그럼에도 불구하고 예측 성능이 크게 향상되는 경우가 많지 않다. 

   > 그나마 랜덤 포레스트가 하이퍼 파라미터가 적은편

    ▷ 결정 트리에서 사용되는 하이퍼 파라미터와 같은 파라미터가 대부분이기 때문.

 

- n_estimators : 결정 트리의 개수를 지정. 디폴트는 10개. 많이할수록 성능이 향상될 '수 도' 있지만, 시간이 오래걸림

- max_features : 디폴트는 auto. sqrt와 같음. 트리를 분할하는 피처를 참조할때 전체 피처가 아니라 sqrt(전체 피처 개수)만큼 참조 ex) 전체 피처가 16개라면 분할을 위해 4개 참조

- max_depth : min_samples_leat, min_samples_split와 같이 과적합을 개선하기 위해 사용되는 파라미터

 

 

별도 테스트 데이터 세트에서 위에 나온 최적의 하이퍼 파라미터로 수행해본 결과

93%가 나왔다.