1

我正在我的智能设备上实施 k-最近邻算法,以便从识别数据中识别人类活动。我将解释我将如何实现它。你们能否建议我对我正在采取的步骤进行任何改进,并回答我在途中可能会问的任何问题?

这些是步骤:

  1. 我下载了一个带标签的数据集,其中包括来自加速度计的三轴加速度以及描述活动的标签。我将在这个数据集中选择一些我希望识别的活动(在我的例子中是步行、坐着、站立)的数据。
  2. 然后,我将从数据集中的加速度计数据的每个窗口(即从包含加速度计数据的 128 个读数的数据集中的每条记录)中提取特征(在我的情况下,从幅度加速度的平均值、最小值、最大值、标准偏差)和我将以 JSON 格式将这些特征与窗口标签(作为一条记录)一起存储在设备上的文本文件中。因此,训练数据集中的一个记录/样本将包括:平均值、最小值、最大值、标准差和一个标签
  3. 在分类步骤中,从收集的数据中,我还将有一个加速度计数据窗口,从中提取上述 4 个特征。因此,我需要将收集到的数据的 4 个特征与训练数据中的每个样本进行比较。我应该如何找到它们之间的相似性,因为一条记录将包含 4 个特征?

作为第 (3) 点问题的解决方案,我正在考虑通过计算每个特征之间的差异来获取每个特征的 k 最近邻,然后从每个特征中挑选出大多数。请问你怎么看?你能提出任何优化吗?谢谢 :)

4

2 回答 2

1

相当有趣和有趣的应用程序!;-)

好吧,其中一个问题当然是知道何时开始和停止计算这些功能,但我想你已经有了一些解决方案(固定时间窗口,或按钮......)。你当然可以使用 knn 分类器来做到这一点,但这肯定不是我的首选,因为它对异常值非常敏感(如果你的测量在一次训练中搞砸了,它将永远影响你的下一个分类) . 所以我宁愿选择高斯模型:

  1. 为每个活动记录大约 10 到 20 个示例(即,4 个值的向量)
  2. 计算每个活动的平均向量和对角协方差矩阵
  3. 在测试时,您计算新观察向量由三个高斯模型之一生成的高斯似然性,然后选择似然性最大的活动。
于 2014-02-14T16:12:22.083 回答
0

我会以不同的方式处理这个问题。我会在更长的时间内(比如 1 周)采集大量样本,然后在其中找到集群。之后,只要当前测量值接近其中一个集群,用户就可以标记这些集群。集群的数量应该限制在几个活动中,以便用户只需要标记几个集群。

缺点:

  • 需要来自用户的训练数据/没有即时满足感。
  • 实现起来比较复杂。

优点:

  • 为用户定制。
  • 不受外部/非个人培训数据的限制。
  • 使用其他数据(光/温度/GPS/时间/声音/相机)。
  • 可能更准确。
  • 算法的连续重新训练是可能的。
  • 随着更多数据的可用,准确性会随着时间的推移而提高。
  • 可以将标记数据上传到中央服务器并在应用程序的未来版本中使用。
于 2014-02-17T11:13:20.793 回答