Нейронная сеть в R, чтобы предсказать возврат акций - PullRequest
2 голосов
/ 30 января 2012

Я использую пакет neuralnet и использую функцию neuralnet для обучения моих данных и вычислений для прогнозирования.

x <- neuralnet( X15  ~ X1 + X2 + X3 + X8, norm_ind[1:15000,],2,act.fct="tanh",linear.output=TRUE)
pr <- compute(x,testdata)

Проблема, с которой я сталкиваюсь, заключается в том, что pr$net.result значение практически постоянно для всех точек данных.

Я прогнозирую возврат акций и предоставляю реальный доход на один день вперед в качестве целевой функции, т.е. X15 в формуле. Вывод, который я получаю, практически постоянен, как вы можете видеть ниже. Кто-нибудь может сказать мне, что нужно сделать?

1084 0.00002217204168
1085 0.00002217204168
1086 0.00002217204168
1087 0.00002217204168
1088 0.00002217204168
1089 0.00002217204168
1090 0.00002217204168
1091 0.00002217204168
1092 0.00002217204168
1093 0.00002217204168
1094 0.00002217204168
1095 0.00002217204168
1096 0.00002217204168
1097 0.00002217204168
1098 0.00002217204168
1099 0.00002217204168
1100 0.00002217204168

Ответы [ 5 ]

3 голосов
/ 16 мая 2013

Перед обучением нейронной сети через neuralnet настоятельно рекомендуется масштабировать ваши данные:

learn <- scale(learn)
# be honest and use the mean and scaling inferred from the training set -
# the test set could in principle contain only one element causing an incorrect scaling
test <- scale(test, center = attributes(learn)$`scaled:center`, scale = attributes(learn)$`scaled:scale`)
model <- neuralnet(formula, learn, ...)
compute(model, test)$net.result

Нейронные сети чувствительны к сдвигу и масштабированию данных.Кроме того, начальные веса выбираются случайным образом из распределения, аналогичного стандартному нормальному.

См., Например, главу 3.2 «Предварительная обработка» (и многое другое) в превосходной статье Йошуа Бенжио [1]..

[1] http://arxiv.org/abs/1206.5533

0 голосов
/ 09 мая 2014

Наиболее вероятная проблема заключается в том, что у вас слишком много входных переменных для количества доступных данных обучения.

Вот хорошая информация по этой теме

https://stats.stackexchange.com/questions/65292/r-neuralnet-compute-give-a-constant-answer

0 голосов
/ 17 февраля 2012

Попробуйте установить аргумент learningrate в функции neuralnet на что-то вроде learningrate=0.01

Значением по умолчанию является NULL, и я обнаружил, что это вызывает аналогичную проблему при выполнении подобных тестов с использованием nnet ()

0 голосов
/ 31 декабря 2012

У меня похожая проблема, и я думаю, что это может быть связано с проблемой локальных минимумов в традиционных нейронных сетях.Возможно, вам придется выйти за рамки пакета neuralnet, чтобы получить то, что вы хотите.

0 голосов
/ 30 января 2012

Я не уверен, что это проблема, но только 2 скрытых узла могут быть ответственны за проблему.

...