Bắt đầu ngayBắt đầu miễn phí

Tìm số lượng cây phù hợp cho gradient boosting machine

Trong bài tập này, bạn sẽ chuẩn bị xây dựng một mô hình gradient boosting để dự đoán số xe đạp được thuê trong một giờ dựa trên thời tiết, loại ngày và thời điểm trong ngày. Bạn sẽ huấn luyện mô hình trên dữ liệu của tháng Bảy.

Dữ liệu tháng Bảy đã được nạp sẵn. Hãy nhớ rằng bikesJuly.treat không còn cột biến mục tiêu, nên bạn phải lấy từ dữ liệu chưa xử lý: bikesJuly$cnt.

Bạn sẽ dùng gói xgboost để khớp mô hình random forest. Hàm xgb.cv() (docs) sử dụng cross-validation để ước lượng lỗi học ngoài mẫu khi mỗi cây mới được thêm vào mô hình. Số lượng cây phù hợp cho mô hình cuối cùng là số làm tối thiểu hóa holdout RMSE.

Trong bài này, các đối số chính cho lệnh gọi xgb.cv() gồm:

  • data: một ma trận số.
  • label: vector kết quả (cũng là số).
  • nrounds: số vòng tối đa (số cây cần xây dựng).
  • nfold: số fold cho cross-validation. 5 là một con số hợp lý.
  • objective: "reg:squarederror" cho biến mục tiêu liên tục.
  • eta: tốc độ học (learning rate).
  • max_depth: độ sâu tối đa của cây.
  • early_stopping_rounds: dừng sau từng này vòng nếu không cải thiện.
  • verbose: FALSE để không in log.

Bài tập này là một phần của khóa học

Học có giám sát với R: Hồi quy

Xem khóa học

Hướng dẫn bài tập

  • Điền vào chỗ trống để chạy xgb.cv() trên dữ liệu huấn luyện đã xử lý; gán đầu ra cho biến cv.
    • Dùng as.matrix() để chuyển data frame đã xử lý thành ma trận.
    • Dùng 50 vòng, và cross-validation 5-fold.
    • Đặt early_stopping_rounds là 5.
    • Đặt eta là 0.75, max_depth là 5.
  • Lấy data frame evaluation_log từ cv và gán vào biến elog. Mỗi hàng của evaluation_log tương ứng với một cây bổ sung, vì vậy số thứ tự hàng cho bạn biết số cây trong mô hình.
  • Điền vào chỗ trống để lấy số cây có giá trị nhỏ nhất của các cột train_rmse_meantest_rmse_mean.
    • which.min() (docs) trả về chỉ số của giá trị nhỏ nhất trong một vector.
    • Bạn cần bao nhiêu cây?

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# Run xgb.cv
cv <- xgb.cv(data = ____, 
            label = ___,
            nrounds = ___,
            nfold = ___,
            objective = "reg:squarederror",
            eta = ___,
            max_depth = ___,
            early_stopping_rounds = ___,
            verbose = FALSE   # silent
)

# Get the evaluation log 
elog <- ___

# Determine and print how many trees minimize training and test error
elog %>% 
   summarize(ntrees.train = ___,   # find the index of min(train_rmse_mean)
             ntrees.test  = ___)   # find the index of min(test_rmse_mean)
Chỉnh sửa và Chạy Mã