#r #neural-network #time-series #forecasting
Вопрос:
Я пытаюсь построить NN, который может предсказывать обменные ценности. Я совсем новичок в R и NN и не совсем понимаю, как я мог бы улучшить показатели производительности нейронной сети. Я попытался отрегулировать пороговое значение и скорость обучения настолько, насколько мог, прежде чем это перестало улучшать результат. Могу ли я улучшить результат дальше, и в какой момент вы останавливаетесь и принимаете результат?
Я добавил ссылку на файл данных, потому что некоторый код работает с меньшими фрагментами набора данных, но не работает с полным набором данных
Набор данных: https://www.dropbox.com/s/17exy1968lsidsc/ExchangeUSDcsv.csv?dl=0
Текущий код:
library(neuralnet)
library(grid)
library(MASS)
library(ggplot2)
library(reshape2)
library(gridExtra)
library(neuralnet)
library(zoo)
library(Metrics)
normalize <- function(x){
return ((x - min(x)) / (max(x) - min (x)))
}
exchangeData <- read.csv("ExchangeUSDcsv.csv")
data <- exchangeData$USD.EUR
data <-as.data.frame(data[!is.na(data)])
currencyDelay <- embed(data[[1]], 4)[, 4:1]
currencyNorm <- embed(normalize(data[[1]]), 4)[, 4:1]
currencyNorm <- as.data.frame(currencyDelay)
training <- currencyNorm[1:400,]
testing <- currencyNorm[401:497,]
set.seed(1234)
#12
currency_model <- neuralnet(V4 ~ ., hidden = 12, threshold = 0.10, learningrate = 0.10,
algorithm = 'backprop', data = training, linear.output = FALSE,
act.fct = 'logistic')
#plot(currency_model)
#Get the model to predict
model_results <- compute(currency_model, testing)
#Store models predictions
predicted_result <- model_results$net.result
#Get original train and test data
currencyDelay_train <- currencyDelay[1:400,]
currencyDelay_test <- currencyDelay[401:497,]
#Find min and from the data
cur_min <- min(currencyDelay_train[,4])
cur_max <- max(currencyDelay_train[,4])
#reversed normalization
unnormalize <- function(x, min, max){
return ((max-min)*x min)
}
#Un-normalize the predictions
models_predictions_unnorm <- unnormalize(predicted_result, cur_min, cur_max)
#Stat Indicies
rmse(currencyDelay_train[4], models_predictions_unnorm)
mae(currencyDelay_train[4], models_predictions_unnorm)
mape(currencyDelay_train[4], models_predictions_unnorm)
Текущие выходы:
RMSE:
0.04519089
MAE:
0.04519089
MAPE:
0.03294277