본문 바로가기

Machine Learning

Decision Tree's Ensemble

반응형
Decision Tree's Ensemble 결정트리의 앙상블

Ensemble은 여러 머신러닝 모델을 연결하는 기법이다.
두 Ensemble Model이 classification과 regression 문제에 효과적으로 나타남.

  1. Random Forest 랜덤 포레스트 
  2. Gradient Boosting Decision Tree 그래디언트 부스팅 결정트리

두 모델 다 기본 요소로 Decision Tree를 이용한다.




Random Forest

기본적으로 조금씩 다른 여러 DT의 묶음이다. 과적합 문제를 피하기 위해 Decision Tree에서 파생된 방식이다.

  • 알고리즘
잘 작동하되 서로 다른 방향으로 overfit한 트리를 많이 만들고 그 결과를 평균냄으로써 overfit을 완하하는 매커니즘이다.

  • 구현 조건
구현을 위해서 많은 DT가 생성되야 한다. 또한, 트리들이 달라지도록 트리 생성 시 무작위성이 주입되야 한다.

  • 무작위성이 주입되는 방식
  1. 데이터 포인트를 무작위로 선택하는 방법(Bootstrap sampling)
  2. 분할 테스트에서 특성을 무작위로 선택하는 방법(노드 별로 다른 features set)

  • 구체적인 구축
  • 생성할 트리 개수를 정함. (n_estimators) 
    • 트리들이 독립적으로 만들어져야 하므로 각 트리가 고유하게 만들어지도록 무작위 선택
  • 데이터의 부트스트랩 샘플(Bootstrap Sample)을 생성
  • 무작위로 데이터를 n_samples만큼 반복 추출          
  • 각 노드에서 후보 feature을 무작위로 선택한 후 이 후보들 중에서 최선의 테스트를 찾음(매 노드마다 수행되는작업) (2단계로 구성)
    • 특성 개수는 hyper-paramer인 max_features를 통해 조정 
  • 결국 각 노드별로 다른 후보 feature를 사용하여 test하게 된다.

  • 핵심적인 요소 (무작위 주입)
  1. Bootstrap Sampling을 통해 트리가 조금씩 다른 데이터셋을 이용해 만들어지도록 함.
  2. 각 노드에서 features의 일부만 사용하기에 트리의 각 분기는 각기 다른 features set을 사용.

  • Parameter
    • max_features = n_features로 설정하면 feature의 무작위성이 없어짐. (데이터 무작위성은 유지)
    • max_features = 1로 설정하면 분기는 테스트할 feature를 고를 필요가 없어지며, 무작위로 선택한 feature의 임계값만 고르면 됨
    • => max_features를 크게하면 랜덤 포레스트의 트리들이 비슷해지고 (feature 무작위성 감소
    • => max_features를 작게하면 랜덤 포레스트의 트리들이 많이 달라지고 각 데이터에 맞추기 위해 depth증가
  • 예측방식
    • 모델에 있는 모든 트리의 예측을 만듬
      • regression은 이 예측들을 평균하여 최종 예측
      • classification은 약한 투표 전략을 사용하여 가능성 있는 출력레이블의 확률을 제공하여 간접적인 예측 수행하고 예측한 확률을 평균내어 가장 높은 확률을 가진 클래스가 예측값이 됨.





랜덤 포레스트는 개개의 트리보다는 덜 overfitting되었고 훨씬 좋은 Decission Boundary를 생성해준다.
실전에선 매우 많은 트리를 사용하여 더 부드러운 Decission Boundary가 생성된다.



Features importance

랜덤 포레스트는 각 트리의 중요도를 취합하여 계산한 것으로, 하나의 트리에서 제공하는 것보다 더 신뢰할 만하다.


무작위성으로 인해 알고리즘이 가능성 있는 많은 경우를 고려할 수 있도록 하므로, 랜덤 포레스트가 단일 트리보다 더 넓은 시각으로 데이터를 바라볼 수 있다. 또한, 훨씬 많은 특성이 0이상의 중요도 값을 갖는것을 확인할 수 있다.



장단점과 Parameter

장점
  • 성능이 우수하고, parameter에 대한 tunning 없이도 잘 작동하며 feature scaling 역시 필요하지 않다.
  • 매우 큰 데이터셋에도 잘 작동하며 훈련은 여러 CPU 코어로 병렬 작업이 가능함.

단점
  • 의사 결정을 간소하게 표현해야 한다면 단일 트리가 유리함.
  • 랜덤 포레스트는 feature의 일부만 사용하므로 단일 트리보다 depth가 깊어지는 경향이 있음
  • 수백 개의 트리를 자세히 분석하기에는 어려움이 있음
  • 텍스트 데이터 같이 고차원이고 희소 데이터에는 잘 작동하지 않음 
    • Linear Model이 유리함
  • Linear Model에 비해 Memory 사용량이 많고 train과 predict가 느리다. 
    • 속도나 메모리 사용 제약이 있을시에는 Linear Model이 적합.

유의할점
  • CPU 코어가 많을 수록 계산에 유리하다. n_jobs=-1을 지정하면 컴퓨터의 모든 코어를 사용
  • 다른 random_state를 사용하면(지정하지 않으면), 다른 모델이 만들어짐.
  • 트리가 많을수록 random_state값의 변화에 둔감해짐.
  • 같은 결과가 필요하면 같은 random_state를 사용해야 한다.

Parameter
n_estimators, max_features가 핵심적인 Hyper-parameter이고, max_depth 같은 pre-pruning 옵션이 존재. 
n_estimators는 클수록 좋음. 더 많은 트리를 평균하면 overfit을 피할 수 있어 더 안정적인 모델이 생성됨.
다만, 더 많은 모델은 곧 많은 메모리와 긴 훈련시간으로 이루어 진다.
가용한 시간과 메모리만큼 많이 만드는 것이 좋은 전략이다.




Gradient Boosting Regression Tree

이전의 RF와 마찬가지로, 여러 결정 트리를 묶는 ensemble method.
regression과 classification 모두에 사용이 가능하다.

  • 알고리즘
이전 트리의 오차를 보완하는 방식으로 순차적으로 트리 생성하는 것이 골자
얕은 트리 같은 간단한 모델(weak learner)를 많이 연결 하는 것인데, 각 트리가 데이터의 일부에 대해서만 예측을 잘 수행하여 트리가 늘어날 수록 성능 향상

  • 특징
RF와 달리 무작위성이 없다.
대신, 1~5정도의 얕은 depth만 사용하여, 강력한 pre-pruning이 적용된다.
이로인해 메모리 가용량이 적고 예측이 빠르다.

  • Hyper-Parameter

이전 트리의 오차를 얼마나 강하게 보정할지에 대한 Learning_rate
-> 학습률이 클수록 강한 보정이 수행되어, 모델 복잡도가 커진다.

트리의 개수를 지정하는 n_estimators
->크기가 커지면, 앙상블에 많은 트리가 생성되므로, 모델 복잡도가 커지고, 훈련 세트에서의 실수를 바로잡을 기회가 많아진다.

overfit을 방지하는 pre-pruning의 max_depth



*트리 100개를 사용하고 각각의 트리는 depth가 1

RF에서의 결과와 비슷하지만, GB는 일부 feature가 0이다. 달리 말하면, 안정성이 비교적 떨어진다.
때문에 일반적으로 RF를 먼저 적용하고, 예측시간이 중요하거나 모델에서 마지막 성능까지 쥐어짜야 할 때 GB를 사용한다.



장단점과 Parameter

단점
  • Hyper-Parameter를 잘 조정해야 한다
  • training 시간이 길다
  • 트리 기반 모델 특성상 희소한 고차원 데이터에는 잘 작동하지 않음

장점
  • 다른 트리 기반 모델과 마찬가지로 scaling이 필요 없고, Binary feature가 Continuous feature에서도 잘 작동

중요 Parameter
  • 트리 개수 지정 n_estimators
  • 이전 트리의 오차 보정 정도 조절 learning_rate
    • lr이 낮아지면, 비슷한 복잡도 모델을 위해 더 많은 트리(높은 n_estimators)가 필요하다.
    • rf와 달리 n이 클수록 복잡한 모델이되며, overfit하는 경향이 있다.
  • 복잡도를 낮추는 max_depth
    • max_depth를 일반적으로 매우 작게 설정한다. (최대 5)

반응형

'Machine Learning' 카테고리의 다른 글

Classification에서의 불확실성 추정  (0) 2019.02.02
Kernel Support Vector Machines  (0) 2019.01.27
Naive Bayes, Decision Tree  (0) 2019.01.23
Linear Model  (0) 2019.01.22
KNN Classifier, Regression  (0) 2019.01.21