1. 학습
  2. /
  3. 강의
  4. /
  5. R로 하는 Supervised Learning: 회귀

Connected

연습 문제

Gradient Boosting Machine에 적합한 트리 개수 찾기

이 연습에서는 날씨, 자전거 종류, 시간대 정보를 바탕으로 한 시간 동안 대여된 자전거 수를 예측하는 gradient boosting 모델을 만들 준비를 하겠습니다. 모델은 7월 데이터로 학습합니다.

7월 데이터는 이미 로드되어 있습니다. bikesJuly.treat에는 더 이상 결과 컬럼이 없으므로, 미처리 데이터에서 결과를 가져와야 합니다: bikesJuly$cnt.

xgboost 패키지를 사용해 랜덤 포레스트 모델을 적합하겠습니다. xgb.cv() 함수(docs)는 교차 검증을 통해 모델에 새 트리가 추가될 때마다 샘플 외 학습 오류를 추정합니다. 최종 모델에 사용할 적절한 트리 개수는 보류 집합 RMSE가 최소가 되는 시점입니다.

이번 연습에서 xgb.cv() 호출의 핵심 인자는 다음과 같습니다:

  • data: 숫자 행렬.
  • label: 결과 벡터(역시 숫자).
  • nrounds: 최대 라운드 수(구축할 트리 개수).
  • nfold: 교차 검증 폴드 수. 5가 적절합니다.
  • objective: 연속형 결과의 경우 "reg:squarederror".
  • eta: 학습률.
  • max_depth: 트리의 최대 깊이.
  • early_stopping_rounds: 이 횟수만큼 개선이 없으면 중지.
  • verbose: 조용히 실행하려면 FALSE.

지침

100 XP
  • 공란을 채워 처리된 학습 데이터로 xgb.cv()를 실행하고, 출력은 변수 cv에 할당하세요.
    • as.matrix()로 처리된 데이터 프레임을 행렬로 변환하세요.
    • 50 라운드와 5-폴드 교차 검증을 사용하세요.
    • early_stopping_rounds는 5로 설정하세요.
    • eta는 0.75, max_depth는 5로 설정하세요.
  • cv에서 데이터 프레임 evaluation_log를 가져와 변수 elog에 할당하세요. evaluation_log의 각 행은 트리가 하나 더 추가된 상태를 나타내므로, 행 번호가 모델의 트리 개수를 의미합니다.
  • 공란을 채워 train_rmse_mean과 test_rmse_mean 열의 최소값을 갖는 트리 개수를 구하세요.
    • which.min()(docs)은 벡터에서 최소값의 인덱스를 반환합니다.
    • 트리는 몇 개가 필요할까요?