Tôi đang sử dụng triển khai XGboost và Rừng ngẫu nhiên của R để tạo dự báo trước 1 ngày cho doanh thu. Tôi có khoảng 200 hàng và 50 dự đoán. (Khi tôi đi xa hơn trong thời gian tôi có nhiều dữ liệu hơn nên nhiều hàng hơn).
Mô hình XGBoost với các tham số dưới đây kém hơn 6% so với mô hình rừng ngẫu nhiên ngoài giá trị đối với lỗi bình phương trung bình. Hơn nữa, mô hình rừng ngẫu nhiên chính xác hơn một chút so với mô hình dự báo chuỗi thời gian tự phát. (Tôi chưa thử Arimax nhưng tbh).
Đối với Xgboost, tôi đã thử thay đổi eta thành 0,02 và num_rounds thành 8.000, nhưng bây giờ phải mất một thời gian dài để chạy. Có một số loại hướng dẫn mà tôi có thể sử dụng để cải thiện độ chính xác dự báo của mô hình xgboost? Tôi có đang sử dụng tính năng đa lõi đúng cách không?
Tôi cảm thấy như thể tôi đang đi xung quanh trong bóng tối với tiền thưởng cận biên. Nếu nó giúp, tôi đang sử dụng lõi I7 với ram 12gb, chạy Windows 7 Professional. Tôi đánh giá cao sự giúp đỡ của bạn!
rf.mod = randomForest(act ~ ., data = train)
rf.pred = predict(rf.mod, newdata = test)
#####################################
train_x <- sparse.model.matrix(~., data = train[,2:ncol(train)])
train_y <- train$act
test_x <- sparse.model.matrix(~., data = test)
xgtrain <- xgb.DMatrix(data = train_x, label= train_y)
xgtest <- xgb.DMatrix(data = test_x)
num_rounds <- 1000
evalgini <- function(preds, dtrain) {
labels <- getinfo(dtrain, "label")
err <- NormalizedGini(as.numeric(labels),as.numeric(preds))
return(list(metric = "Gini", value = err))
}
param <- list("objective" = "reg:linear",
"eta" = 0.2,
"min_child_weight" = 5,
"subsample" = .8,
"colsample_bytree" = .8,
"scale_pos_weight" = 1.0,
"max_depth" = 8)
xg.mod <- xgb.train(params = param, data = xgtrain, feval = evalgini, nround=num_rounds, print.every.n = num_rounds, maximize = TRUE)
xg.pred <- predict(xg.mod ,xgtest)