Ich verwende Rs Implementierung von XGboost und Random Forest, um Prognosen für den Umsatz für einen Tag im Voraus zu erstellen. Ich habe ungefähr 200 Zeilen und 50 Prädiktoren. (Wenn ich mit der Zeit weiter gehe, habe ich mehr Daten, also mehr Zeilen).
Das XGBoost-Modell mit den folgenden Parametern ist in Bezug auf den mittleren quadratischen Fehler 6% schlechter als ein Standard-Zufallswaldmodell. Darüber hinaus ist das Zufallswaldmodell etwas genauer als ein autoregressives Zeitreihen-Prognosemodell. (Ich habe Arimax noch nicht ausprobiert).
Für Xgboost habe ich versucht, eta auf 0,02 und num_rounds auf 8.000 zu ändern, aber jetzt dauert die Ausführung lange. Gibt es eine Anleitung, mit der ich die Prognosegenauigkeit des xgboost-Modells verbessern kann? Benutze ich die Multi-Core-Funktion richtig?
Ich habe das Gefühl, als würde ich mit einer geringen Auszahlung im Dunkeln herumgreifen. Wenn es hilft, verwende ich ein Core I7 mit 12 GB RAM unter Windows 7 Professional. Ich freue mich über Ihre Hilfe!
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)