Ответ 1
Мне действительно нравится пакет caret
, так как он обеспечивает приятный унифицированный интерфейс для различных моделей, таких как nnet
. Кроме того, он автоматически настраивает гиперпараметры (например, size
и decay
) с использованием перекрестной проверки или повторной выборки начальной загрузки. Недостатком является то, что вся эта повторная выборка занимает некоторое время.
#Load Packages
require(quantmod) #for Lag()
require(nnet)
require(caret)
#Make toy dataset
y <- sin(seq(0, 20, 0.1))
te <- data.frame(y, x1=Lag(y), x2=Lag(y,2))
names(te) <- c("y", "x1", "x2")
#Fit model
model <- train(y ~ x1 + x2, te, method='nnet', linout=TRUE, trace = FALSE,
#Grid of tuning parameters to try:
tuneGrid=expand.grid(.size=c(1,5,10),.decay=c(0,0.001,0.1)))
ps <- predict(model, te)
#Examine results
model
plot(y)
lines(ps, col=2)
Он также предсказывает в надлежащем масштабе, поэтому вы можете напрямую сравнивать результаты. Если вас интересуют нейронные сети, вы также должны взглянуть на пакеты neuralnet
и RSNNS
. caret
теперь может настраивать модели nnet
и neuralnet
, но еще не имеет интерфейса для RSNNS
.
/edit: caret
теперь имеет интерфейс для RSNNS
. Оказывается, если вы отправите письмо разработчику пакета и попросите добавить модель к caret
, он обычно это сделает!
/edit: caret
также теперь поддерживает байесовскую регуляризацию для нейронных сетей с прямой связью из пакета brnn. Кроме того, теперь карет теперь упрощает определение собственных пользовательских моделей, чтобы взаимодействовать с любым пакетом нейронных сетей, который вам нравится!