|
NEW: |
Notes on NXL2 Training, and neural modeling in generalAssuming that you have selected inputs that do indeed contribute to the prediction, and are as little correlated between each other, there are internally (at least) 4 essential aspects to always bear in mind when using neural networks:
Building a training set is for most neural net practitioners the main issue. Academics will often spend endless time refining the internal neural structure, or tweaking the learning algorithm, but real-life applications require primarily having a good understanding of the problem on hand. Using a non-linear technique like neural nets can be rewarding, but will often require spending time and effort selecting the right inputs and outputs, i.e. understanding the causalities, or patterns we wish to bring about. Inputs should therefore contribute to the prediction, so one can for instance calculate the correlation of each input with the output(s). Secondly, inputs should be as little inter-correlated as possible, to minimize redundancy, which is not an obstacle per se, but an unnecessary complication. Generally speaking, data preprocessing is the most overlooked part in neural modeling. Without going into too many details, data must be scaled, and often de-trended in some way, so that an input does not completely overshadow another one. In simple function mapping, noise is generally not an issue, but it is in real-life applications. There are various forms of noise, but the simplest way to reduce its effect on training is to apply a smoothing technique. Neural nets built along the Feed-Forward MLP architecture are already pretty good at ignoring redundant inputs, so one should give them an equal chance to start off with. Secondly, they are usually not too good at mapping extreme values, and dampening them with a log transform does help. Data mapping is provided in our Excel code. Please read a neural net tutorial, or contact us if you need assistance here. Network generalization is critical. Neural networks have that inherent tendency to fit the data used in training. This means that the neural net simply strives to memorize the patterns instead of learning, i.e. bringing about the salient features in the training data set. Using a test set is therefore essential to make sure the neural net still behaves well on data not seen during training. In trading, test data usually follows training data, and may contain different patterns that were not present in the training set. Users should always make sure that both training and test set do represent well the population of patterns the neural will try to bring about. In other applications, random picking can be used to build training and test sets instead of simple historical splitting. Network accuracy is also an important issue. In trading, one might not always need the neural net to go and learn the finest details. As the matter of fact, it may even lose its capability as a fuzzy operator. User's discretion is required here. A word of wisdom...If you're desperate about modeling data, and throw everything but the kitchen sink in your training set, you'll be heading straight for major disappointment... The old adage "Garbage In, garbage out" is very true. Lastly, don't put too much faith into neural predictions. Your neural indicator will be a composite of your inputs, so is likely not to be much more predictive than the inputs you are using, and at the end of the day, often just constitute great multi-dimensional moving averages... From experience, using neural nets as classifiers can be far more rewarding, and yet this utilization of neural nets is often overlooked. "Prediction" brings about the "Crystal Ball" image, while "Classification" sounds more like paper work... hence our psyche often leads the wrong way... Happy trading! :)
December 08, 2007 |
Today:
- Page last modified:
December 08, 2007 |