我正在开发一个识别加速度计手势的Android应用程序。目前,我仅使用动态时间规整(DTW)来计算输入手势与数据库中大约200个独特手势数据之间的最小距离。我的应用程序会遍历数据,并将输入手势与数据库中的手势数据逐一进行比较。它能够在平均5秒内找到最小距离并识别手势。问题是能否将识别时间缩短到半秒或更短?我是否必须使用像KNN这样的分类方法,并将其与DTW方法结合?如果有示例或参考资料将不胜感激。
回答:
你目前所做的是1NN。换句话说,你已经在运行最简单的KNN方法,K=1。改变K不会加速任何事情,它只能改变结果的质量。要加速这个过程,你可以考虑使用两种方法:
- 使用一些索引方法,这将降低基于距离搜索的计算复杂度。这个问题被称为最近邻搜索(NNS),甚至维基百科也提供了很多关于其加速的信息;
- 使用完全不同的分类方法,构建一个更简单的模型(可能是SVM甚至某些决策树——这取决于你的实际数据)。