Mit nnet für die Vorhersage mache ich es richtig?
Ich bin noch ziemlich neu in R und AI /ML Techniken. Ich möchte eine neuronales Netz für die Vorhersage, und da ich neu bin möchte ich nur um zu sehen, ob dies ist, wie es getan werden sollte.
Als Testfall, ich bin Vorhersage der Werte von sin()
, basierend auf 2 vorherigen Werte. Für das training erstelle ich eine Daten-frame mity = sin(x)
, x1 = sin(x-1)
, x2 = sin(x-2)
, dann verwenden Sie die Formel y ~ x1 + x2
.
Scheint es zu funktionieren, aber ich Frage mich nur, ob dies der richtige Weg, es zu tun, oder wenn es mehr idiomatische Weise.
Dies ist der code:
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)
Dank
[Bearbeiten]
Ist dies besser für die Vorhersagen nennen?
t2 <- data.frame(sin(x), Lag(sin(x)))
names(t2) <- c("x1", "x2")
vv <- predict(p, t2)
plot(vv)
Ich glaube, ich würde gerne sehen, dass die nnet tatsächlich funktioniert, suchen Sie in seine Vorhersagen (die sollte ungefähr eine Sünde Welle.)
predict()
- Aufruf sieht verdächtig aus. Sie sind nicht nur die Vorhersage " y " mit "y"? Auf der anderen Seite könnte es scheitern, tatsächlich liefert newdata, da es nicht ein dataframe. So würden Sie nur "Vorhersage" mit der verzögerten Werte in 'te'. Könnte man auf erweitern
zu vermeiden benötigen "pkg:quantmod" plot(x, vv); lines(x, y)
, und Sie sehen, es ist ein lag (was es scheint, Sie erwarten.) InformationsquelleAutor der Frage dizzy | 2011-10-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich mag die
caret
- Paket, da gibt es eine schöne, einheitliche Schnittstelle zu einer Vielzahl von Modellen, wiennet
. Darüber hinaus wird es automatisch tunes hyperparameters (wiesize
unddecay
) mit cross-validation-oder bootstrap-re-sampling. Der Nachteil ist, dass alle diese re-sampling dauert einige Zeit.Es sieht auch auf den richtigen Maßstab, so können Sie direkt vergleichen Sie die Ergebnisse. Wenn Sie interessiert sind, in neuronalen Netzen, sollten Sie auch einen Blick auf die
neuralnet
undRSNNS
Pakete.caret
können derzeit Melodiennet
undneuralnet
Modelle, aber noch nicht über eine Schnittstelle fürRSNNS
./edit:
caret
hat jetzt eine Schnittstelle fürRSNNS
. Es stellt sich heraus, wenn Sie per E-Mail die Paket-maintainer und darum bitten, dass ein Modell Hinzugefügt werden, umcaret
er wird in der Regel tun Sie es!/edit:
caret
unterstützt nun auch die Bayesianische Regularisierung für feed-forward neuronale Netze aus der brnn Paket. Darüber hinaus caret-jetzt macht es auch viel einfacher können Sie Ihre eigenen custom-Modelle, um eine Schnittstelle mit jeder neuronalen-Netzwerk-Paket, das Sie mögen!InformationsquelleAutor der Antwort Zach