Merit of feeding Neural Networks data on the certainty of input/output relationship
2 views (last 30 days)
Show older comments
Hi,
I am working on a stock investing neural network. I have determined some quantitative technical indicators that generally are useful (i.e. correlated) to my output (which at the end of the day is return).
Here is the issue I am grappling with. The indicators sometimes work and sometimes do not work, largely depending on the stock. I am wondering if there is an intelligent way to tell the neural network when to pay more or less attention to the the indicators depending on the stock.
Here is more detail on what I mean. The NN is set up in a way that it accepts a bunch of different inputs and the output is stock return. I only have one NN, so I send it data from different stocks without telling it that there exist different stocks. My idea is to calculate some measure of effectiveness and send it into the NN. Then, hopefully the NN would learn that when effectiveness is low it pay more attention to the quantitative indicators. Of course, this assumes that the trailing effectiveness will help predict the forward effectiveness, which I think is a reasonable assumption and the NN presumably will learn to the extent the effectiveness does tend to stick. Does anybody know if this makes sense to do?
Here is another idea I had. I could set up a NN just for the certain inputs that are known to vary in effectiveness and also feed this NN the effectiveness measures. I could have this NN return expected return, only I train this NN to maximize the return on the top 25% of stocks. Presumably, the return that will come out of this analysis will already consider as lower return those stocks for which effectiveness is bad (since their results are unpredictable).
Finally, perhaps I could do as I suggested above and feed effectiveness, but then because I train the NN to maximize the return of the the top-ranked stocks, the NN will learn to properly use the effectiveness input. The low-effectiveness stocks may still have a high return, but they will be effectively be screened out of my top 25% because of lack of predictability. Does this make sense?
Thanks so much for any help.
Regards, Mike
0 Comments
Accepted Answer
Greg Heath
on 8 Aug 2014
I have had tremendous success with this simple approach:
Add varying amounts of random noise to the original inputs but keep the original targets.
Piece of cake!
Hope this helps.
Thank you for formally accepting my answer
Greg
1 Comment
Image Analyst
on 28 Aug 2014
Michael's "Answer" moved here since it's not an answer to the original question:
Greg,
Thanks for the response. However I don't understand. Are you saying I should actively add noise to the inputs and see if it changes the performance of the network? And if it does not, then the network is somehow proven or better? Thanks again.
Best, Mike
More Answers (1)
Greg Heath
on 8 Aug 2014
In general (revise as you please and correct the coding errors)
0. Standardize data with zscore and discard or modify outliers (plots help)
1. Design ~100 nets with ~ 10 different sets of initial random weights for ~10 different numbers of hidden nodes.
2. Use the nontraining (val&test) performance to determine the smallest number of hidden nodes that can yield satisfactory results. Choose and store the best performing nets.
3. Create 10 copies of the input data with varying levels of added noise. (Later you may want to use a denoised (e.g., lowpass filter) version of the data to create input0. However, first just use the current data.)
var0 = var(inputs0);
for SNRdb = SNRdbmin:dSNRdb:SNRdbmax
SNR =10^(SNRdb/10);
inputs = inputs0 + sqrt(var0/SNR)*randn(size(input0))
end
4. Test the corrupted data on the best nets and obtain an idea of performance vs SNR
5. It may be possible to improve performance by training with noise added data.
6. The rest is trial and error. You might also try to obtain noise levels lower than that in the original data by lowpass filtering.
Hope this helps.
Thank you for formally accepting my answer
Greg
1 Comment
Image Analyst
on 28 Aug 2014
Michael's "Answer" moved here since it's not an answer to the original question:
Greg, i read a bit about "jitter" which seems like what you suggest...so now I understand it a bit better. I'll give it a try and let you know how it goes. thanks.
See Also
Categories
Find more on Sequence and Numeric Feature Data Workflows in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!