머신러닝 - 분류모델 Random Forest

Sylen·2024년 5월 29일

Dive to Machine Learning

목록 보기
5/12

Random Forest

  • Decision Tree Algorithm에 대한 Specialized Bagging

  • 두가지 방법을 통해 앙상블의 Diversity을 상승시킴

부트스트랩을 통해 데이터에 다양성 부여

Feature Selection에 다양성 부여

  • Tree는 작은 Bias와 큰 Variance를 갖기 때문에, 매우 깊이 성장한(Depth가 깊은) 트리는 훈련 데이터에 대해 Overfitting 하게 됨

  • 한 개의 Tree의 경우 훈련 데이터에 있는 Noise에 대해 매우 민감함

  • Tree들이 서로 상관화(correlated)되어 있지 않다면 여러 Tree들의 평균은 Noise에 대해 강인해짐

  • 상관화를 줄이는 방법은 Randomly Chosen (행 & 렬 모두)

  • 반면, Forest를 구성하는 모든 Tree들을 동일한 데이터 셋으로만 훈련시키게 되면, Tree들의 상관성은 커짐

  • 따라서 Bagging은 서로 다른 데이터 셋들에 대해 훈련 시킴으로써, Tree들을 비상관화 시켜주게 됨

  • Bias는 유지하면서 Variance를 낮춤

  • Bootstrap 적용시 36.8%의 데이터가 추출되지 않는다면 -> 데이터에 0.01%의 노이즈가 있다면 학습시 36.8%만큼 노이즈를 줄여서 학습시키는 것이 가능하다

Out of Bag

  • Bootstrap을 진행하면 확률 상 뽑히지 못한 데이터는 36.8%가 된다.
  • 뽑히지 못한 Data를 활용하여 Model의 성능을 측정함
  • 대게 Model의 성능을 측정할 때, Train Set과 Valid Set을 나눔
  • Random Forest모델의 경우 Valide Set을 나누지 말고 뽑히지 못한 36.8%의 OOB DATA를 활용
  1. OOB데이터를 사용해 모델의 Error1을 측정
  2. i번째 변수에 대한 random permutation이 수행된 OOB DATA를 생성
  3. 교란된 데이터에 대해 Error2를 구한다.
  4. Error1과 Error2의 차이가 크지 않다면 교란된 변수의 중요도가 떨어진다고 판단할 수 있음
  5. 이를 통해 각 변수에 대한 중요도를 측정할 수 있음

Feature Importance Score

  • 모집단에 있는 전체 트리의 평균과 표준 편차를 기반으로 변수 중요도 계산

-> 여기서 찾은 의미있는 변수를 선정하여 Decision Tree 등의 해석력이 있는 모델을 다시 활용해 확실하게 변수마다의 의미를 찾고 설명해줘야함

profile
AI가 재밌는 걸

0개의 댓글