728x90
Introduction

Introduction

  • 결정 트리는 여러분에게 어려운 결정을 남겨줍니다. 많은 잎을 갖는 깊은 트리는 각 예측이 적은 집의 데이터에서 온 데이터이기 때문에 오버피팅을 유발할 것입니다. 한편 적은 잎을 갖는 얕은 트리는 raw 데이터에서 많은 특성을 찾지 못해 좋지 못한 성능을 갖게 될 것입니다.

  • 비록 오늘날의 대부분의 모델링 기술이 오버피팅과 언더피팅 사이의 이러한 긴장을 마주하고 있지만, 많은 모델들은 더 나은 성능을 위한 좋은 아이디어를 갖고 있습니다. 우리는 이런 예시로 Random Forest를 알아볼 것입니다.

  • Random Forest는 많은 트리를 이용하여, 각 구성 트리의 예측을 평균하여 예측합니다. 보통 단일 결정 트리보다 더 나은 예측 정확도를 갖고 기본 파라미터로도 잘 동작합니다. 만약 여러분이 계속해서 모델링한다면, 여러분은 더 좋은 성능을 갖는 모델들에 대해 배우게 되겠지만, 대부분은 적절한 파라미터에 민감하게 반응합니다.

Example

  • 여러분은 이미 데이터를 불러오는 코드를 본 적이 있습니다. 데이터를 불러올 때, 우리는 다음과 같은 변수를 갖게 됩니다.
    • train_X
    • val_X
    • train_y
    • val_y
  • 우리는 scikit-learn에서 결정 트리를 만든 방식과 유사하게 랜덤 forest model을 만듭니다 - 이번에는 DecisionTreeRegressor 대신 RandomForestRegressor 클래스를 사용합니다.
from sklearn.metrics import mean_absolute_error forest_model = RandomForestRegressor(random_state=1) forest_model.fit(train_X, train_y) melb_preds = forest_model.predict(val_X) print(mean_absolute_error(val_y, melb_preds))
/opt/conda/lib/python3.6/site-packages/sklearn/ensemble/forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22. "10 in version 0.20 to 100 in 0.22.", FutureWarning) 202888.18157951365

Conclustion

  • 더 개선의 여지가 있지만, 결정 트리의 오차값인 250000을 볼 때 매우 큰 개선이 이루어졌습니다. 우리가 단일 결정 트리의 최대 깊이를 바꾼 것과 같이 랜덤 포레스트의 성능을 여러분이 바꿀 수 있는 파라미터가 존재합니다. 하지만 이러한 튜닝 없이 일반적으로 하는 것이 랜덤 포레스트 모델의 가장 좋은 기능 중 하나라고 할 수 있습니다.
  • 여러분은 곧 튜닝과 적절한 파라미터값일 때 더 좋은 성능을 제공(하지만 파라미터 값을 위해 적당한 기술이 필요한)하는, XGBoost 모델에 대해 배울 것입니다.
728x90

+ Recent posts