预测时间序列XGBoost模型

时间:2018-12-11 23:17:51

标签: r xgboost

我最近在R中遇到了library(forecastxgb)软件包,并且有一些疑问。

有人使用过该包装吗?我想通过在train数据上训练模型并在test数据上对其进行测试,然后对看不见的数据进行预测来进行尝试。我唯一能看到的是,您将所有数据都输入,然后根据此数据进行预测。

以下是使用Google股票的非常简单的XGBoost预测模型的输出。我不太确定如何解释结果。 y轴是否预测了概率?在我的示例中,股票可以上升或下降,可以是1或0。该图是否告诉我预测的概率在0.3到0.7之间?

在下面的模型中,我们在338天训练数据并在130天进行测试,因此黑线是训练预测,蓝线是测试前提,如何获得模型的概率-如果我是使用这种模型购买股票,我想知道股票上涨的可能性是否大于0.5等。我也想输入自己的参数进行优化。

在此图上绘制实际结果并查看模型的性能也将非常有趣。

终点(一般预测预测问题)我将如何使用此模型(或任何预测模型)为第二天做出决定?我将在星期一训练模型,并在星期二获得预测。然后在星期二重新训练模型,并在星期三获得预测等。

问题:

如何获取预测的概率 我如何输入自己的参数(我假设该软件包是xgboost主软件包的包装器 如何将实际结果绘制在预测概率上,甚至将xgb预测(ifelse xgbpreds > 0.5, 1, 0)与实际结果进行比较

enter image description here 一些基本的时间序列预测模型:

rm(list=ls())
    from <- "2017-01-01"
    to <- "2018-12-01"

    library(quantmod)
    symbols <- 'GOOG'
    getSymbols(symbols, from=from, to=to, src="yahoo", adjust=TRUE)  
    colnames(GOOG) <- c("open", "high", "low", "close", "volume", "adjusted")

    GOOG$direction <- with(GOOG, ifelse(close >= open, 1, 0))

    train_date <- nrow(GOOG) *0.7
    GOOG$rsi <- RSI(lag(GOOG$close), nFast=14, nSlow = 26, nSig = 9, maType = SMA)
    GOOG$momentum <- momentum(lag(GOOG$close), n = 12)
    GOOG <- GOOG[complete.cases(GOOG), ]

    xgbtrain <- GOOG[1:train_date,]
    xgbtest <- GOOG[-c(1:train_date),]

    x_train <- xgbtrain[, 8:ncol(xgbtrain)]
    y_train <- xgbtrain[, c("direction")]

    x_test <- xgbtest[, 8:ncol(xgbtest)]
    y_test <- xgbtest[, c("direction")]




    library(forecastxgb)
    XGBmodel <- xgbar(y = ts(y_train), xreg = ts(x_train))

    plot(forecast(XGBmodel, xreg = ts(x_test)))

0 个答案:

没有答案
相关问题