SDRClassifier - Bad choice of name?


I recently spent some time in trying to figure out how to best use the SDRClassifier. The algorithm API example tells me to use activeCells as input to the classifier along with the current actual value to get 1-step ahead predictions. But then also the prediction of n-step ahead is generated by the SDRClassifier using these activeCells and a history of activeCells. I hope I am correct in this description.

If this is all true then the SDRClassifier is not just a classifier. Its is a predictor in and of itself. Calling it just a classifier is confusing. Also the documentation is not upfront in suggesting that it can predict. It says “The SDR classifier maps input patterns to class labels.” Since, I know that SDRClassifier is used in getting predictions out of TM it makes me think that the input should be predictiveCells instead of activeCells based on the documentation. Documentation does not say that it maps current input patterns to class labels that could occur in future.

I think that either the name of the class and/or the documentation should be explicit in clarifying that to the user.

1 Like

You are right that the SDRClassifier can be used as a predictor of itself. We named it as SDRclassifier because the core of it is a single layer neural network that maps a input pattern (SDRs) to class labels (which can be future values for prediction application), which is a classifier in a machine learning point of view. I agree with you that we should improve the documentation and be explicit that it can predict.

You can try SDRClassifier with predictedCells, but the default is set to use activeCells for several reasons. First, predictedCells may not even exist if TM hasn’t learned the sequence properly. And there may be a very large number of predicted cells if there are multiple predictions, so the sparsity of the predictedCells will vary more than the activeCells, which can lead to bad performance. Second, the information in the predictedCells should also exist in the activeCells, so SDRClassifier should be able to establish that mapping automatically.


2 posts were split to a new topic: How does SDRClassifier make predictions?