Normalization of data in continuous training of a neural network in R

I would like to implement ongoing training of my neural network as my entry continues. However, when I get new data, the normalized values โ€‹โ€‹will change over time. Let's say that over time I get:

df <- "Factor1 Factor2 Factor3 Response 10 10000 0.4 99 15 10200 0 88 11 9200 1 99 13 10300 0.3 120" df <- read.table(text=df, header=TRUE) normalize <- function(x) { return ((x - min(x)) / (max(x) - min(x))) } dfNorm <- as.data.frame(lapply(df, normalize)) ### Keep old normalized values dfNormOld <- dfNorm library(neuralnet) nn <- neuralnet(Response~Factor1+Factor2+Factor3, data=dfNorm, hidden=c(3,4), linear.output=FALSE, threshold=0.10, lifesign="full", stepmax=20000) 

Then, as soon as the time comes:

 df2 <- "Factor1 Factor2 Factor3 Response 12 10100 0.2 101 14 10900 -0.7 108 11 9800 0.8 120 11 10300 0.3 113" df2 <- read.table(text=df2, header=TRUE) ### Bind all-time data df <- rbind(df2, df) ### Normalize all-time data in one shot dfNorm <- as.data.frame(lapply(df, normalize)) ### Continue training the network with most recent data library(neuralnet) Wei <- nn$weights nn <- neuralnet(Response~Factor1+Factor2+Factor3, data=df[1:nrow(df2),], hidden=c(3,4), linear.output=FALSE, threshold=0.10, lifesign="full", stepmax=20000, startweights = Wei) 

This is how I will train over time. However, I was wondering if there is any graceful way to reduce this biased attitude towards continuous learning, since normalized values โ€‹โ€‹inevitably change over time. Here, I assume that abnormal values โ€‹โ€‹may be biased.

+7
r neural-network training-data normalization
source share
1 answer

You can use this code:

 normalize <- function(x,min1,max1,row1) { if(row1>0) x[1:row1,] = (x[1:row1,]*(max1-min1))+min1 return ((x - min(x)) / (max(x) - min(x))) } past_min = rep(0,dim(df)[2]) past_max = rep(0,dim(df)[2]) rowCount = 0 while(1){ df = mapply(normalize, x=df, min1 = past_min, max1 = past_max,row1 = rep(rowCount,dim(df)[2])) nn <- neuralnet(Response~Factor1+Factor2+Factor3, data=dfNorm, hidden=c(3,4), linear.output=FALSE, threshold=0.10, lifesign="full", stepmax=20000) past_min = as.data.frame(lapply(df, min)) past_max = as.data.frame(lapply(df, max)) rowCount = dim(df)[1] df2 <- read.table(text=df2, header=TRUE) df <- rbind(df2, df) } 
0
source share

All Articles