У меня есть временная серия (цены на акции яблока - цены закрытия - превращаются в кадр данных, чтобы соответствовать случайному лесу с помощью каретки. Я отставал на 1 день, 2 дня и 6 дней. чтобы предсказать следующие 2 дня. Прогноз на два шага вперед. Но caret
использует функцию predict
, которая не допускает аргумент h
как функцию forecast
. И я видел, что некоторые люди пытаются поставить аргумент n.ahead
, но не работают для меня. Любые советы? Смотрите кодRandom Forest - Caret - Time Series
df<-data.frame(APPL)
df$f1<-lag(df$APPL,1)
df$f2=lag(df$APPL,2)
df$f3=lag(df$APPL,6)
# change column names
colnames(df)<-c("price","price_1","price_2","price_6)
# remove rows (days) with NA.
df<-df[complete.cases(df),]
fitControl <- trainControl(
method = "repeatedcv",
number = 10,
repeats = 1,
classProbs = FALSE,
verboseIter = TRUE,
preProcOptions=list(thresh=0.95,na.remove=TRUE,verbose=TRUE))
set.seed(1234)
rf_grid= expand.grid(mtry = c(1:3))
fit <- train(price~.,
data=df,
method="rf",
preProcess=c("center","scale"),
tuneGrid = rf_grid,
trControl=fitControl,
ntree = 200,
metric="RMSE")
nextday <- predict(fit,`WHAT GOES HERE?`)
Если я кладу просто predict(fit)
использует в качестве newdata
весь набор данных. Что я думаю, что это неправильно. другая вещь, о которой я думал, - это сделать цикл. Предсказуем на 1 шаг вперед, потому что у меня есть данные 1,2 и 6 дней назад. И заполнить для 2-го шага вперед прогноз 1 день назад «клетка» с прогнозом, который я сделал раньше.
Первый совет, вам нужно добавить воспроизводимый пример, иначе мы не сможем проверить код, чтобы помочь. Второй совет, ваш скрипт в любом случае приведет к ошибке, поскольку вы не закрыли двойную кавычку в строке функций 'colnames'. Третий совет: функция 'preview.randomForest' не имеет аргумента' n.ahead'. Четвертый совет, я не понимаю, почему алгоритм машинного обучения должен вести себя как прогноз, который является эконометрическим алгоритмом для временных рядов. – LyzandeR
Удивительная обратная связь @LyzandeR Спасибо! – donpresente
... так что «временное окно» и RF отлично работают для прогнозирования временных рядов. Но вы можете выбрать только одну целевую модель pr.fit. Простое добавление функций как дней -1, -2 и -6 недостаточно для создания полезной модели. Это будет прогностическим, но бессмысленным, поскольку запасы не являются стационарными. «Я предсказываю, что завтра цена завтрашнего дня станет чем-то вроде сегодняшнего дня и так далее ...». Вам необходимо преобразовать данные в лог-файл или относительное изменение. То, что вы хотите знать, - это то, что у фонда будет увеличенный шанс подняться завтра, и вы не будете знать это с большей уверенностью, чем другие торговые агенты. –