我不太了解基于时间的聚类,并且想知道是否有任何算法适合我的用例。
我有一组运动数据(范围为0-500),我想将它们按时间间隔聚类。
我的问题是我想找到时间点,在该时间点上存在主要的运动差异。我将确切地知道应该将它们分组多少个分组(例如5个单独的集群),但不会知道一个分组的结束位置,而下一个分组的起始位置。
在这种情况下是否有适用的好的算法?我当时在看K-Means,但不管时间如何,它似乎都非常擅长聚类,而我更是在关注运动数据来寻找界限。
答案 0 :(得分:0)
我认为您可以从动态程序中获得良好的结果。对于每个间隔[i, j)
,令C(i, j)
为损失函数,当间隔值更可能是一个簇时,该函数较低。然后,以L(k, r)
为元素k
的最多[0, r)
个元素簇的最小损耗,我们有方程式
L(1, r) = C(0, r)
L(k, r), k > 1 = min over s in [0, r) of L(k-1, s) + C(s, r).
如果需要O(1)
的{{1}}值,则通过备忘评估这些方程将花费k
时间和O(n^2)
空间,其中O(n)
是样本数
n
的第一个合理选择是该区间内样本的统计差异。天真的,这需要C(i, j)
的时间来计算每个时间间隔,但是如果将Theta(n^3)
从其最大值迭代到最小,Welford's algorithm可用于在线计算方差,因此整个算法将仍然是s
。