特征提取; 加速度计数据的相似性和分类

数据挖掘 机器学习 分类 特征提取 传感器
2022-03-12 08:30:52

我有几个专家多次执行相同的特定动作(例如,蹲下或向前跳跃)。假设 5 个人每人做 100 次深蹲。他们有一个加速度计连接到相同的身体部位。我记录加速度计读数并获得 100*5 = 500 个数据样本。他们为多种不同的动作(下蹲、俯卧撑、向前跳跃等)做这件事。他们记录动作的方式如下:

  1. 开始录制(按钮)
  2. 做动作
  3. 停止录制(按钮)

现在我需要看到另一个人正在以正确的顺序执行操作。例如下蹲、向前跳跃、站起来、下蹲、上推。我获取他的加速度计数据并不断将其提供给分类器,该分类器需要告诉我他现在是否做了一个深蹲动作,而不是一个跳跃或俯卧撑。因此,当确定第一个动作,即深蹲时,我会检查跳跃等。

这有几个问题:

  1. 这些数据样本具有不同数量的值,因为有人蹲得慢一点,而其他人蹲得快一点。因此,一些数据样本有 250 个 XYZ 值,其他有 220 或 270 等(在 +-50 范围内)。我现在要做的是制定更严格的规则。我丢弃了所有超过 250 个读数的数据样本,对于那些值少于 250 的数据样本,我将值从头到尾附加,这样它总共给出了 250 个。工作正常,因为在执行动作之前,人在短时间内静止不动的每个动作都有一个结束。这不是最优的,因为如果专家太慢(结束时间太长),他们需要重做操作+我附加了假数据。有什么更好的解决方案来处理这个问题?
  2. 现在我正在使用随机森林、AdaBoost 分类器和低/高通滤波加速度计数据,我映射到 750 列(250 X、250 Y、250 Z)和 1 个类列。所以预测告诉我70%的跳跃,25%的深蹲,5%的俯卧撑。分类有时是错误的或不够精确。因此,我正在考虑从我的信号系列中提取一些特征并将它们提供给算法。我的问题是我不知道要提取什么特征。

我发现的大多数论文都集中在人类活动识别上,以区分步行、跑步、上楼梯和下楼梯。在他们有一个人步行/跑步数小时的连续数据流并且他们使用更多的样本数据方面,它们并不是很有帮助。相比之下,在我的任务中,我有彼此分开的数据集实例。

我不是要求为我解决所有这些任务,只是引导我进入某个方向,并很好地解释为什么它可能有用。

2个回答

首先,您需要为每位专家创建一个单独的模型,因为一位专家的活动与其他专家完全不同。

解决您的第一个问题:

附加假加速度计数据将使结果完全偏向于一项活动,因为最坏的情况是 250 分中的 50 分,即 20% 的数据在您的最后被增强。相反,您可以使用专家执行的特定操作获得的点数,而不将假/增强数据附加到获得的加速度计数据。您可以丢弃 250 以上的点,这不会对预测产生太大影响。

解决您的第二个问题:

您可以进行各种统计特征提取,例如 (X,Y,Z)max, (X,Y,Z)min, (X,Y,Z)mean, (X,Y,Z)std。您也可以使用 SMA(信号幅度面积) = |X|+|Y|+|Z| - SMA 变量用于区分时间序列中的移动性(活动)和休息时间。

您可以验证功能和活动类之间的相关性。

关于您的第一个问题:我建议您不要丢弃值的数量,即使它大于或小于 250。相反,您可以做的是;在一段时间内聚合加速度计的值,然后将其绑定到单个动作。

关于您的第二个问题:您有大约 750 列数据。在其上使用随机森林算法并获得更高的准确性将非常困难。您必须应用降维,然后应用特征提取技术。您可以继续使用 PCA(主成分分析)f 750 个自变量。将其减少到 2 或 3 个变量,并检查这些减少的变量可以解释多少方差。如果低于 60%。您可以应用 T-SNE 算法在其上提取更多特征。

PS 检查您的归约变量是否可以解释您的因变量(如蹲、坐、俯卧撑),您可以绘制归约变量值的散点图,然后根据您的因变量为值着色。你可以点击下面的链接来理解我在说什么

https://blog.bioturing.com/2018/06/18/how-to-read-pca-biplots-and-scree-plots/