Now that the SDRClassifier is formally in NuPIC, I was just wondering if the SDRClassifier is:
1.) Supposed to replace the CLAClassifier in “default” usage such as in the Network API; OPF; Demos and Products?
2.) Will the CLAClassifier be taken out entirely; deprecated or left in for specific use cases?
3.) When is the SDRClassifier preferred over the CLAClassifier?
The plan is to make the SDRClassifier as the default usage for Network API, OPF etc. The next step would be to replace CLAClassifier for the demos. Unless we find out cases where CLAClassifier give better performance than SDRClassifier, the CLAClassifier will be deprecated.
The SDRClassifier typically results in fewer outlier predictions than CLAClassifier as it not only reinforce correct predictions, but also punish incorrect ones during learning. The learning rules for SDRClassifier are derived under the maximum likelihood framework, whereas the CLAClassifier used heuristic learning rules.
If you are asking about maximum-likelihood in general, I personally learned it from Duda & Hart’s Pattern Classification book (I am sure it is included in any machine learning text book). Briefly, likelihood is a metric of how well your model predicts the data. By tuning model parameters such that the likelihood is “maximized”, you are improving the prediction quality of the model. So it is essentially a disciplined model parameter estimation technique.
@ycui
I have just looked at your C++ class for SDRClassifier.cpp and have found that before calling push_back() for adding a new element into a vector, we should use reserve(num_new_elements) for better performance.
What do you think?
Binh.