# How to classify positional time series data?

I am working with a data set that includes (x, y, z) coordinates and timestamps of human movement. The input data looks something like:

[{
"movement_type": 1,
"path": [
{
"x":  1.5959584221177756,
"y": -0.02057698369026184,
"z": 1.1674611568450928
},
{
"x":  1.5959584221177756,
"y": -0.01429012417793274,
"z": 1.1671339273452759,
},
...
],
"timestamps": [
1666898619.132143,
1666898619.135477
]
},{
"movement_type": 2,
"path": [
{
"x":  1.5959584221177756,
"y": -0.02057698369026184,
"z": 1.1674611568450928
},
{
"x":  1.5959584221177756,
"y": -0.01429012417793274,
"z": 1.1671339273452759,
},
...
],
"timestamps": [
1666898619.363774,
1666898619.370507
]
}]


The ultimate task is: given a stream of x/y/z and timestamps can we classify a subset of the stream as one of the movement types in the training data?

There is no guarantee that the movements are done at the same velocity or in the same space. Because of this, I imagine I will need to process the data to focus on more on the difference between successive points, rather than absolute positions.

I'm specifically looking for guidance on how to start thinking about this problem. Is this a time series classification problem? Any suggestions on how to encode the data or features to extract? I'm sure there is some precedent but I am having trouble finding a starting place. Thank you in advance.

A good question. In short, yes, it is a time series problem. One simple way you can start thinking of it is translation.

1. Given one dimension and time, how would you recognize patterns? You will have some benchmarks and if any of those are met you will say okay because the position moved from [(1m, 1sec), (2m, 2sec), (1m, 3sec)] it is a certain kind of known pattern.

2. Given two dimensions and time, how will you recognize patterns now? Exactly the same way, but now with (x, y, t).

So, for n dimensions to be analyzed, we have n+1 variables. While it might not be absolutely necessary in this case to need a continuous representation of your dataset, you can consider these independent points in time as one continuous dataset in the 3+1th hyper dimension that in this case will be representing time.

Since you are the owner of the dataset (or at least the question) I believe you know all this already. Now, you can basically create (n-1) vectors that represent the translation of the point b/w ith and i+1th data-point. You can now run the dataset on a seq-to-seq model and call it a day!

But wait! There exists a simpler way! What is it? It's a multi-class binary classifier. You just need to think about converting each chunk of the dataset as one data point, and for that, you need to find a representation of that chunk (assuming each of these chunks is labeled). One way would be to extract features from each chunk of the dataset. You might be looking at the vector sum of 2-d projections, distance traveled, time taken, etc. Once you have a rich feature set you can perform the regular Data Engineering steps before training the classification model.

Hope this helps.

• Thank you so much for the response. I'll be exploring your suggestions and may reach out with further questions :) Jul 5 at 13:14