Я все еще довольно новичок в методах R и AI/ML. Я хотел бы использовать нейронную сеть для предсказания, и поскольку я новичок, мне просто хотелось бы посмотреть, так ли это должно быть сделано.
В качестве тестового примера я предсказываю значения sin()
, основанные на двух предыдущих значениях. Для обучения я создаю кадр данных с y = sin(x)
, x1 = sin(x-1)
, x2 = sin(x-2)
, затем использую формулу y ~ x1 + x2
.
Кажется, что это работает, но мне просто интересно, правильно ли это сделать, или если есть более идиоматический способ.
Это код:
require(quantmod) #for Lag()
requre(nnet)
x <- seq(0, 20, 0.1)
y <- sin(x)
te <- data.frame(y, Lag(y), Lag(y,2))
names(te) <- c("y", "x1", "x2")
p <- nnet(y ~ x1 + x2, data=te, linout=TRUE, size=10)
ps <- predict(p, x1=y)
plot(y, type="l")
lines(ps, col=2)
Спасибо
[править]
Это лучше для прогноза?
t2 <- data.frame(sin(x), Lag(sin(x)))
names(t2) <- c("x1", "x2")
vv <- predict(p, t2)
plot(vv)
Думаю, мне хотелось бы видеть, что nnet действительно работает, глядя на его предсказания (которые должны аппроксимировать волну sin).