Looking for an algorithm to perform classification on multivariate grouped time series

I will be grateful for any help.

I have multivariate time series, where every one of them has an unique ID. Also, there is a variable giving information about the trend type of the ID from a point of view of a single variable which we consider important.

The problem is, I need to understand, how is behaviour (or trends) of other variables (time series in ID) affecting the inclusion of the ID to a specific stated trend category.

I was thinking the Decision Tree algorithm would be nice. It would make a classification, but also the very important thing, it would show the rules on which basis the node is split. The issue is, I need to split objects not observations (split IDs), and maintain the multivariate structure in time.

Important thing to mention:

  • The time series are of a different length. It is unbalanced panel. Longitudinal data.

Reproducible example:

#      #var1             #var2            #var3
id1 = [[1,2,3,4,3,2,1], [1,2,3,4,5,6,7], [7,6,5,4,3,2,1]]
id2 = [[1,2,3,4,5,6,7], [9,9,8,8,7,7,6], [7,6,5,4,3,2,1]]
id3 = [[7,6,5,4,3,2,1], [1,2,3,4,3,2,1], [1,2,3,4,3,2,1]]

#... taking the first variable as the base for trend classification variable

trend_cat = {'id1':'concave', 'id2':'linear_up', 'id3':'linear_down'}

#looking for: Trend_cat ~ var2(objects) + var3{objects)

So I am looking for an algorithm (or a method) which would explain difference between objects (of ts) and classify them into trend_categories, and also give information how the classification is made (no black-box).

Thank you for all the help I can get. Have a nice day!

Topic decision-trees hierarchical-data-format classification time-series clustering

Category Data Science

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.