Does the Geospatial Coordinate Encoder support prediction?

encoders
question

#1

Hi, forum–

I’m just wondering if the geospatial encoder supports prediction and if there are any examples out there on how to do that. I understand the basic concept, I think, but would really appreciate the extra help and clarification.

Thanks!


Can you stack multiple spatial pooler regions on top of each other?
#2

No, you cannot because the encoder is incomplete. See:


#3

If I needed to do some coordinate prediction, then, should I use the grid cell technique?

Also – I notice your files for the grid cells are written in JavaScript. Do I need to write those in JavaScript?

Thanks!


#4

We don’t have a method of doing coordinate prediction at this point with NuPIC, but this is an active research area (sensorimotor integration and modeling).


#5

Do you think I could use a spatial encoder to get roughly the same results?


#6

I think you could use grid-cell techniques like I have shown in my videos and code examples (in JavaScript) to generate SDRs that encode location, yes. Depending on how you set up your grid cell module orientations, semantic overlap properties between locations will be different. We have not been experimenting with using grid-cell mechanisms for input encodings, but we all agree it should work.

I wrote all my code in JavaScript because I’m targeting the web browser for my visualization platform. If you want to do this in Python, you will have to port the code.


#7

I watched your tutorial on predicting the sine function-- do you think I could do something similar with my “paths” just using a spatial encoder, or are the multiple numbers it would need to predict something the spatial encoder can’t handle?


#8

What do you mean by this? All encoders are spatial.


#9

Not using a coordinate encoder, I suppose.


#10

Ok, I see, like using XYZ coordinates and just encoding them as scalar values? This does not work as well because it doesn’t incorporate speed, but you might try it.


#11

Encoders transform input data into a format which encodes the semantics of the problem domain. For coordinate encoders, the semantics being encoded are multidimensional location.

It’s up to the algorithm (read: SpacialPooler & TemporalMemory etc.) to make predictions of future inputs.


#12

I should probably swarm over my data for that to work, right?


#13

I honestly don’t think it is going to work very well. You’re going to be predicting three values, right? X,Y,Z? What kind of data are you processing? What is the granularity of the stream? What do the coordinates represent?

We can do decent with anomaly detection on geospatial data, but not prediction.


#14

Yes, I’d be attempting to predict x,y,z coordinates. Each set of coordinates simply represents a location in time. The hope would be to train a network to predict the next step in a path. The training data has 100 locations per path and about 20,000 paths.

Thank you very much for all of your help so far.


#15

Yes, but what is at that location? Are these events over time or objects moving over time?


#16

It’s an object moving over time.


#17

Great. I think the best way forward if you want to do prediction with the geospatial encoder is to work on this issue:

I do not suggest encoding x,y,z into three scalar values.


#18

Ahhh. I remember that! I was going to give it a shot at one time, but I never corralled the initiative to kick it off… Would be cool to keep it in the community’s attention perimeter, because I’m sure someone will pick it up? @scott had some interesting ideas on how to approach it…