-
Notifications
You must be signed in to change notification settings - Fork 75
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Classifier Region #761
Comments
Looking just at the PredictorRegion: The comments in the code are not much help in figuring out how to use this thing. I am having to do a lot of guessing and I am not sure I have it right. This is what I have so far for the Spec
|
@dkeeney I'll try to answer the questions.
I'd start with a ClassifierRegion and then we'll see. But Likely yes.
"Array of n-steps ahead we want to learn and predict" (value 0 makes no sense for a Predictor, it degrades it to a Classifier)
the learning should be quite simple for the MLP given SDR, so users typically don't need to fiddle with that.
I think this should not be a param of the Region. There's no resolution used in a Classifier/Predictor.
must be an integer. This is the problem above, converting "any real" values into integer type bins (aggregating)
type either just
interesting, we don't have that in the Classifier. Might add. Maybe better computed overall than for each cat.
not vector for each cat, but a real for each. I'm not sure how this was meant.
I think the plotting should be online, ie redrawn for each iteration (internally the plotter would do some caching for efficiency). But I don't think we should worry about a plot now. |
Thanks for your comments.
I think you are right. I will do that first.
|
Unless I am missing something, the SDRClassifier depends on knowing all of the buckets that were used by the original encoding. It needs the list of titles, indexed by the bucket index. Its output is an array giving the probability for each of the bucket indexes. The RDSE encoder cannot give us the buckets. So that encoder would not be directly usable with the SDRClassifier. However, I got to thinking about how we might make it usable. Perhaps we could do this by recorded the actual values mapped to the indexes that were actually used (the index that is hashed). Of course the RDSE encoder only works if the number of indexes actually used is significantly smaller than the width of the hash so that the number of collisions is held to a minimum. We really should have a tool that can be used to evaluate the data set to determine if the RDSE encoder is even appropriate. But that is another topic. Anyway, what if we had an array which held the quantized floating point value that corresponds to each of the buckets that were actually used rather than the buckets that could possibility be used. The SDRClassifier could then be given an index into that array along with the pattern while learning. The RDSE encoder could build a map and each time it found a value that it did not already have, it would add it to this map. But that complicates the RDSE encoder and adds extra computations for a structure that would be used only if an SDRClassifier was also being used. So, what if we moved that to the Classifier. Let the Classifier accumulate the' actual used map'.
Anyway, what do you think? |
I was reading the comments on PR #680 and it sounds like I was evolving in that same direction. A map in the SDRClassifier to use in mapping patterns back to their original values...which in my case were doubles from the RDSE encoder. Perhaps with a little more thought we could come up with a way that decodes multiple decodings when multiple encoders are used (i.e. date encoder, etc). |
I started looking at what it will take to build a Predictor Region.
The Predictor class is in SDRClassifier.cpp along with the Classifier class.
It looks like the Predictor class usage is quite different from the Classifier. Perhaps different enough that perhaps I should have a PredictorRegion and a separate ClassifierRegion.
The text was updated successfully, but these errors were encountered: