现在,我读了很多关于这一主题的不同论文(其中安德烈亚·曼尼尼和安吉洛·玛丽亚·萨巴蒂尼撰写的《从人体加速度计对人体运动进行分类的机器学习方法》似乎是最有用的一篇),我对需要做的事情有了一些清晰的理解(有些步骤可能看起来不对,因为我没有有统计学/ML方面的经验):
-
我需要从智能手机沿3个轴收集加速度计数据。
-
下一步是将数据分为交流分量和直流分量(其中一个与重力加速度有关,另一个与人体加速度有关)。我需要使用身体加速组件,因为这个组件似乎可以为活动识别问题提供更好的结果。
-
下一步是从车身加速部件中提取一些特征-由于这不是问题的一部分,因此要提取的特征尚未确定。
-
我需要获取我的特征向量列表并训练一个分类器(很可能我会使用隐马尔可夫模型,因为这个分类器似乎是顺序分类任务的最佳选择,而手势识别任务似乎属于顺序分类任务)。
-
之后我可以评估和完善。
Data from 0s to 1.0s
Data from 0.5s to 1.5s
Data from 1.0s to 2.0s
...
Data from n s to (n+1.0)s
我不明白的是每个窗口都有加速度计读数:
x0, y0, z0
x1, y1, z1
x2, y2, z2
...
xn, yn, zn
如你所见,这不是向量,而是矩阵。但是我需要一个特征向量来训练我的分类器,那么我该如何将矩阵压缩到向量中呢?
我对这些论文的作者是如何做到的有一些想法:
-
我们可以基于每个三元组创建一个特征向量:
[featureA based on x0, y0, z0; featureB based on x0, y0, z0; featureA based on x1, y1, z1; featureB based on x1, y1, z1; ... ; featureB based on xn, yn, zn]
.
-
或者我们可以取窗口内加速度计读数的平均值,这样我们就只有一个三元组了
xa, ya, za
('a'代表'average'),然后创建这样的特征向量:
[featureA based on xa, ya, za; featureB based on xa, ya, za]
我不喜欢第二个想法,因为似乎平均加速度计数据读数,即使是小窗口
可以
导致数据丢失和分类器行为不足。可能论文作者的意思和第一个想法差不多,但我不确定。