Information Technology Reference
In-Depth Information
As you can see, the time series data is now ready to be used in a normal
symbolic regression task, where ( t -10) through ( t -1) are the independent vari-
ables and t is the dependent variable.
In real-world time series prediction the goal is to find a model and then
use that model to make predictions about future events. And the model is
usually put to the test the next day or hour, depending on the frequency of the
observations. But here, as an illustration, we can simulate a real situation
using only the first 80 observations of the Wolfer sunspots to evolve the
model (that is, for training) and the last 10 for prediction (for testing, in this
case). This way we will be able to evaluate the accuracy of the predictions
that can be made by the models created by the algorithm.
So, let's try to design a model to explain and predict sunspots with gene
expression programming. A good starting point would be to choose the kind
of parameters used in the sunspots experiment summarized in the first col-
umn of Table 7.6. Then, with Gepsoft APS, through a series of optimization
runs, one can exploit the current chromosomal structure to the fullest, that is,
let the system evolve for a couple of thousands of generations and go through
three of four mass extinction cycles until it stops improving. After that, a
neutral gene is added to the system and again the system is exploited to the
fullest, and so forth until the introduction of another neutral gene is no longer
accompanied by a burst in genetic innovation. Theoretically, this kind of
procedure allows one to approximate any continuous function to an arbitrary
precision if there is a sufficient number of terms. Here, the added neutral
genes are potential new terms and Gepsoft APS allows their fruitful integra-
tion in the equation. For instance, the C++ model below was created using a
total of five such cycles (one for each added neutral gene):
double apsModel(double d[])
{
double dblTemp = 0;
dblTemp = (d[9]+((d[8]/(d[5]+d[4]))+((d[9]-d[9])*d[0])));
dblTemp += (d[9]/((((d[3]+d[3])+d[2])-d[9])+d[8]));
dblTemp += (d[9]/(d[4]+d[6]));
dblTemp += (d[9]/(d[4]+d[2]));
dblTemp += (d[5]/(d[2]-d[6]));
dblTemp += (d[3]/(d[1]-d[5]));
dblTemp += (d[1]/(d[7]-d[0]));
dblTemp += ((((d[2]-d[8])*d[9])+(d[0]+d[0]))/
(d[7]+(d[8]+d[2])));
return dblTemp;
(7.13)
}
Search WWH ::




Custom Search