Hello,
I have a project in short term load forecasting using neural networks.
I am using newff matlab function as follows:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% normalization
[pn,ps]=mapminmax(p); % p is the input data matrix (training)
[tn,ts]=mapminmax(t); % t is the output data matrix (training)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
net=newff(minmax(pn), [5 1], {'tansig','purelin'},'trainbr');
net.trainParam.show = 50; % The result is shown at every # epoch
net.trainParam.lr = 0.05; % Learning rate used in some gradient schemes
net.trainParam.epochs = 1000; % Max number of iterations
net.trainParam.goal = 1e3; % Error tolerance; stopping criterion
net = init(net);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% train network
[net,tr,Y,E] = train(net, pn, tn);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% To simulate the training data
an = sim(net,pn);
% denormaliz
a = mapminmax('reverse',an,ts);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% load forecasting
pt1n = mapminmax('apply',pt1,ps); % inputs for forecasting
pf1n = sim(net,pt1n);
pf1 = mapminmax('reverse',pf1n,ts); % forecasted load consumption
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
where p is my inputs data matrix which contains the factors that affect the load
consumption like temperature, holidays, load at previous days, weekends……..etc and
they are 20 inputs and t is my output data matrix which is the load consumption. My
question is how can I select the above parameters in the code like Learning rate, max
number of iterations, error, epoch……….etc My training data is hourly inputs from 1985
to 1989 meaning that it is 43656 points
So, my inputs matrix is 20 by 43656 in training. My output matrix is 1 by 43656 in
training. My input testing matrix is the hourly inputs for year 1990 which is 20 by 8760.
I want to predict the hourly load consumption for year 1990.
From reading many papers, as I understood, that selecting these values depends on
the application and number of inputs. But, what does this mean “depends on the
application“. Are there guidelines or “key” to how to start selecting these values. Or it
may be selected to some limits if the number of training data is in a specified range
What I have selected is random numbers and the results are somehow reasonable in
some points but not well in other points. Also, it sometimes takes long time to train
(to 10 minutes)
So, in summary:
I want a key to how to start selecting these values. I am sure it is not randomly
selection as I have done. I know that there is no rule to do that but at least there are
steps or guidelines.
Also, I am not restricted to use newff, if there is simpler and better NN model, I can
use it.
Regards
