2013-03-22 252 views
1

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

这些步骤如下:

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

作为第(3)点问题的一个解决方案,我想通过计算它们之间的差异,然后从每个特征中挑出大多数来考虑每个特征的k-最近邻。你觉得怎么样?你可以提出任何优化?谢谢:)

+0

特征空间是4维,你可能想要在4D中采用欧几里得距离之前对每个轴进行归一化。不是每个维度的距离。 – Memming 2013-03-22 14:21:26

+0

你是什么意思?@Memming – user1135357 2013-03-22 14:26:01

+0

也许你可以'zscore'。 (或者,您可以使用Mahalanobis距离而不是标准化)。 – Memming 2013-03-22 16:36:05

回答

1

非常有趣和有趣的应用程序! ;-)

那么,其中一个问题当然是知道什么时候开始和停止计算这些功能,但我想你已经有一些解决方案(固定时间窗或按钮...) 。 您当然可以使用knn分类器来做到这一点,但这当然不会是我的第一选择,因为它对异常值非常敏感(如果您的措施在单个培训课程中搞砸了,它将永远影响您的下一个分类)。 所以我宁愿去一个高斯模型:

  1. 记录大约10至20实施例为每个活动
  2. 计算每个活动
  3. 平均向量和对角协方差矩阵(即,4个值的矢量)
  4. 在测试时,您计算高斯可能性,即您的新观察向量由三个高斯模型之一生成,并且您选择具有最大可能性的活动。
0

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

缺点:

  • 需要从用户/没有立即满足训练数据。
  • 实施起来比较复杂。

优点:

  • 为用户定制的。
  • 不受外部/非个人培训数据的限制。
  • 使用其他数据(光照/温度/ GPS /时间/声音/相机)。
  • 可能更准确。
  • 算法的连续重新训练是可能的。
  • 随着更多数据的可用,准确性随着时间而改善。
  • 可以将标签数据上传到中央服务器,并在未来版本的应用程序中使用它。