Я запускаю случайные леса из каретки в следующем коде:
library(quantmod)
library(Hmisc)
library(caret)
daysback=1
mlmodels=c("rf","knn")
my.df <- getSymbols(Symbols = "^FTSE", auto.assign = FALSE)
my.df=na.approx(my.df)
difvar=100*(my.df[,4]-my.df[,1])/my.df[,1]
data<-as.data.frame(difvar)
dframe=data.frame(ds=as.Date(rownames(data)),y=as.factor(sign(data[,1])))
for (i in 1:365) {
eval(parse(text=paste0("dframe$y",i,"=Lag(dframe$y, +",i,")")))
}
dframe$year=as.numeric(format(dframe$ds,"%Y"))
dframe$month=as.numeric(format(dframe$ds,"%m"))
dframe$day=as.numeric(format(dframe$ds,"%d"))
dframe$dow=as.numeric(factor(weekdays(dframe$ds), levels = c("Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday", "Sunday"),
ordered = TRUE))
dframe=dframe[complete.cases(dframe),]
start=nrow(dframe)-daysback
end=nrow(dframe)
actual_sign=data.frame(act=sign(dframe$y),date=dframe$ds)
#Run each model for m symbol
rf_f=data.frame()
res=list()
##Forecast data prep
for (j in start:end){
print(j)
dframetmp=dframe[1:j,]
m_rf = train(y~.-ds, data=dframetmp, method="rf")
}
Как видите, все мои y и x являются категориальными переменными.Год, месяц, день, день недели и запаздывающие значения y, что также является категоричным.Помимо добавления некоторого кода для преобразования всех этих факторов, мне нужно делать что-то еще, например, создавать фиктивные переменные?Любое предложение по оптимизации?
Спасибо большое, Джордж