I am trying to write a program for weather forecasting using backpropagation. I am a beginner in this field. I have historical data with different parameters like temperature, humidity, wind speed, rainfall etc.
I am confused about how to provide this data to the input layer. Is each input node to be given the whole of the data for a given day, or do I need to have a different network for each parameter? I am also confused about the output layer.
As the weather data is nonlinear, Artificial Neural Network (ANN) has become an effective way of predicting weather data precisely and accurately. Neural Network is a system that can be trained with certain input and output. It creates its own structure based upon how it is trained.
The work proposes to predict a day's weather conditions. For this the previous seven days weather is taken into consideration along with fortnight weather conditions of past years.
New weather-forecasting research using AI is fast-tracking global weather predictions. The study, recently published in the Journal of Advances in Modeling Earth Systems, could help identify potential extreme weather 2–6 weeks into the future.
It's possible that machine learning models could eventually replace traditional numerical weather prediction models altogether. Instead of solving a set of complex physical equations as the models do, these systems instead would process thousands of past weather maps to learn how weather systems tend to behave.
In the input layer have X separate nodes for each dimension (weather, wind, etc) of input data, where X is the number of days to look back to (let's say 4-7). Then you should normalize each input dimension in a suitable range, let's say [-1.0, 1.0].
Have a second "hidden" layer fully interconnected with the first layer (and also with a fix 1.0 input "bias" node to serve as a fix point). There should be less nodes here than in the input layer, but that's just a rule of thumb, you may need to experiment.
The last layer is your output layer fully interconnected with the second layer (and also drop in a bias). Have a separate output neuron for each dimension.
Don't forget to train with the normalized values on both the input and output. Since this is a time series, you may not need to randomize the order of training data but feed them as they come in time - your net will learn the temporal relations also (with luck :)
(Also note that there is a method called "temporal backpropagation" which is tuned for time series data.)
It seems to me, that decision trees might be a better solution to this problem than neural networks. Here is a description of how decision trees work. Also, there is software available that has implementations of various classificators including neural networks. I've worked with Weka and it works very well. There are also libraries which you can use to utilize Weka's functionality with programming languages such as Java and C#. If you do decide to work with Weka, make sure you familiarize yourself with the .arff format described here.
I have used (and own) this book: Introduction to Neural Networks with Java
I found it a useful reference. It covers quite a spectrum of NN topics, including backpropogation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With