【问题标题】:Recommended Algorithim for time based clustering基于时间的聚类推荐算法
【发布时间】:2019-04-14 16:24:39
【问题描述】:
我对基于时间的聚类不是很了解,并且想知道是否有任何算法非常适合我的用例。
我有一组运动数据(范围从 0-500),我想将它们按时间间隔进行聚类。
我的问题是我想找到在时间间隔上存在主要用力差异的时间点。我会确切地知道他们应该有多少分组(例如 5 个单独的集群),但不知道一个在哪里结束,下一个从哪里开始。
在这种情况下是否有一个好的算法可以应用?我在看 K-Means,但它似乎非常擅长聚类而不考虑时间,而且我更倾向于寻找运动数据的边界。
【问题讨论】:
标签:
algorithm
k-means
data-science
hierarchical-clustering
【解决方案1】:
我认为您可以从动态程序中获得良好的结果。对于每个区间[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) 和k 的值,使用记忆化评估这些方程需要O(n^2) 时间和O(n) 空间,其中n 是样本数。
C(i, j) 的一个可能的首选是该区间内样本的统计方差。天真地,这需要Theta(n^3) 时间来计算每个间隔,但如果您将s 从最大值迭代到最小值,Welford's algorithm 可用于在线计算方差,因此整体算法仍将是O(n^2)。