# How to evaluate the learned prototypes for multivariate time-series (e.g. motion)?

Consider a method which finds prototypes for multivariate time-series (MTS) data, and is designed to find prototypes for each class of data. For example, the {walking} class consists of some slightly different types of {walking} sub-classes, but they are not annotated. So i want to check if my prototypes can adequately represent the variations within each class and to measure the quality of the estimated prototypes.

In fact, I can calculate the distance of the prototype to the data points, but since it is possible to have more than one prototype per class/cluster, i cannot decide to which data point i should calculate this distance.

If the data is related to motion data, it is possible to watch the resulted prototypes to check how sensible they are. However, i'm not sure how to measure their quality in a numerical way?

• You're asking us how to measure quality, but you haven't defined quality. Thus I don't think we can answer your question. Only you know what counts as quality. I think you need to figure out what it is you want to measure, and what numerical quantities might capture that notion. In this kind of situation, it's often helpful to think about what you want to do with the prototypes, and then think about how to measure how useful your prototypes are for that specific use/application.
– D.W.
Sep 18, 2018 at 20:52

You note " but with more than one prototype per class/cluster."

We often call this a polymorphic class. Consider the analogue in text..

C1 = { dpacekfjklwalkflwalkklpacedalyutekwalksfj} C2 = { jhjhleapashljumpokdjklleaphfleapfjjumpacgd}

Here the class 1 prototypes are polymorphic {walk OR pace}, and so is class 2 {leap or jump}.

You can learn these prototypes with a dictionary building method, and "measure their quality in a numerical way" with just classic accuracy (or precision recall etc).

Using nearest neighbor, the distance between and unknown item, say 'balk' is just defined as:

dist('balk', C1) = min(dist('balk','walk'),dist('balk','pace')) and dist('balk', C2) = min(dist('balk','leap'),dist('balk','jump'))

Paper [a] explains one nice dictionary building method, but there are other ways.

• Dear Eamonn, it is always good to have a reply from you :). Indeed, your paper is an interesting one; however, what i meant is like if for example, the {walking} class (multivariate time-series) consists of some slightly different {walking} sub-classes, but they are not annotated. So i want to check if my prototypes can adequately represent the variations within each class. Also, i'm not sure if relying on classification accuracy is a good strategy, as one may say there exist non-profile-based classifiers which beat the achieved accuracy and thus the purpose of the work will be miss-directed!!
– Bob
Sep 24, 2018 at 3:10