Производительность нейронной сети с использованием rmse

#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