我有一个巨大的日记,其中包含用户完成的操作(例如,审核内容)。 我想找到'大众'动作,意思是行动过于密集(用户可能在不考虑太多的情况下做出这些动作:)。
这将转化为按日期(在线性空间中)聚类动作,以及标记太密集的聚类。
我不是聚类算法和方法的专家,但我认为k-means clustering不会起作用,因为我不知道聚类的数量。 另外,理想情况下,我还想“微调”算法。
你有什么建议?
P.S。以下是我发现的一些资源(在Ruby中):
答案 0 :(得分:4)
另一方面,由于您的数据是一维的,您可以做一些完全不同的事情。
假设您已经在5个时间点采取了行动:(8,11,15,16,17)。让我们为每个动作绘制一个高斯,其中μ等于时间,σ= 3。
现在让我们看看这些高斯人的价值总和是怎样的。
它显示了一个峰值在16左右的动作密度。
基于这种观察,我提出了一个简单的算法。
请注意,对于每个动作,只有一小部分向量需要更新,因为高斯的值会非常快地收敛到零。
您可以通过调整
的值来调整算法请注意,算法在操作数方面是线性的。此外,并行化并不困难:将数据分成多个进程,对高斯进行求和,然后对生成的向量求和。
答案 1 :(得分:1)
查看基于密度的聚类。例如。 DBSCAN和OPTICS。
这听起来就像你想要的那样。