我最近在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)
与实际结果进行比较
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)))