Multiple features and binary output

IMO.

  • Remember that HTM is a memory based system. It doesn’t care about the scale but which bits are on. As long as differnt inputs are represented differently; your clear. But 0.0001~45s is a pretty big range, you might want to use the log scale (if that fits your data). Or try the new GridCell. They can encode a vast range of values with great details without overlapping near by values too much (like the ScalarEncoder does).

  • You can always use a Neural Network. I’m guessing that you want to predict the 0 or 1 state based on the state TM predicted. You can feed a NN the predicted SDR and out comes a prediction. If that is not an option (being too slow to execute, overfitting, etc…). Send the predicted SDR into a SpatialPooler and use a Nearest Neighbor Classifier to classify the result. It has been shown to be effective against unbalanced datasets.
    Or better, you can abuse TemporalMemory as a supervised learning algorithm. TM learns the relation of tn and tn+1. So by sending TM x at t0 and y at t1. And by resetting every time at t1. You turned TM into a supervised learning algorithm! (I have experience with doing that. It’s not doable using the Network API. You need direct access to the layer to do so, but quite amazing when you see it working.).

2 Likes