2

我正在从事一个涉及运动数据分析的项目,以比较并给出相似度分数。我在我的应用程序中可以收集和显示数据,现在需要一些算法指导。


目标:给定从加速度计记录的两个 (x,y,z) 时间序列的运动数据,计算一个相似性分数(实数,最终为 0 到 100),从记录中衡量运动的相似程度。


示例:以下是我的软件中的一些图像,说明了我收集的数据(以及我对它们的相似度分数应该是多少的看法):

这个分数应该不错

也许这应该得分更糟

不应该得分好

相当可怕

好的分数

非常好

不好


一些想法:我在音频处理和计算机视觉方面有一些经验,所以我最初的想法来自那里。首先,我在考虑对信号进行低通滤波(q:哪个 LPF?有很多。),然后尝试动态时间扭曲。我会以这种方式将 x1 与 x2、y1 与 y2 等进行比较。但是,在我看来,与 x2 与 z2 系列的关系相比,这似乎丢失了重要信息,例如 x1 系列与 z1 的关系。

我的另一个想法是在频域中进行分析,可能使用MFCCs。据我了解,这是语音识别中的常用技术。

还有“搞砸了,机器学习”的方法。我可以存储模板化的手势并运行某种魔法以使它们可识别。这不是我的偏好(我希望能够在不需要大量训练数据的情况下完成此任务),但如果有人知道您喜欢“哦,这 肯定会很好用”的方案,那当然可以。


软件+实现:这个项目是用Java完成的,我的数据是这样的:

float[150] x1;
float[150] y1;
float[150] z1; //note: x2,y2,z2 will be of different length, but similar 

因此,如果有人想根据算法建议推荐要使用的库,那么它应该很容易使用。


其他:存在方向问题。但是,我的计划是将其中一个样本作为“参考”并旋转另一个样本的每个x[i],y[i],z[i]点以匹配它。然后进行比较。目前的计划是使用这个旋转公式:罗德里格斯的旋转公式这有意义吗?


4

2 回答 2

4

You can calculate the classification accuracy using dynamic time warping with One Nearest Neighbor classifier. Consider you data only has three dimensions, this is a relatively easy problem. Using dynamic time warping is a good direction. Also, you can use Euclidean distance. The advance of Dynamic Time Warping over Euclidean distance will disappear when your dataset is large.

Since there are only 3 axes, there are two methods, either using data from a single axis, or using data from all axes. Since using all axes is more likely to generate errors, I would suggest using data from just a single axis. For example, use data from x axis, calculate the accuracy. Then you do the same thing for data from y and z. In the last, you will get a accuracy matrix. In each row of the matrix, there are classification result for different activities. In each column of the matrix, you will see the classification result for the same activity in different axis. This is the training procedure. In the testing procedure, you can follow the result from the axis that gives the highest accuracy.

Moreover, there is a problem with the above method. It only counts on the result in the prior knowledge (the past training phase), it does not count in the new evidence (the nearest neighbor distance) in the testing phase.

I have a paper in submission talking about how to use both the prior knowledge and the new evidence in multi-dimensional time series classification. It is still under review, so I can not share it with you. Otherwise, I can send you the paper for your reference.

于 2013-09-07T03:02:09.740 回答
2

非常广泛的问题,我个人将其标记为与语言无关,因为它似乎与 Java 无关。也就是说,我会采取两种主要的方法来解决这个问题。这两者都基于频域,对于大多数应用程序来说,这是有意义的域,但是如果不了解您的应用程序的更多信息,就很难给出很好的建议。

一般来说,我建议查看绝对加速度计矢量,而不是仅查看 x/y/z 方向。

  1. 归一化频谱图:假设这些样本来自不同但相当长度的样本,我的第一种方法是比较两个归一化频谱图的重叠。(像百分比重叠这样简单的方法会起作用,但像积分测量这样的方法可能更准确。)如果您使用这种方法,您可能会发现 BartoszKP 的一些链接很有帮助

  2. 主成分分析(或其一些变体):由于您实际上得到的是一个非常大的问题空间,因此能够确定主特征向量将使您对两个数据流的相似程度有一个很好的了解。我建议确定前 n 个主特征值,然后在特征向量空间上使用简单的相似度度量(想到余弦相似度。)来确定它们在整体上的相似程度。

于 2013-09-01T00:43:13.233 回答