实时检测数据流中的趋势

时间:2013-07-08 22:29:54

标签: math statistics trending data-stream trend

我正试图在Twitter上实时检测热门话题。我正在做的是每次收到推文时,我都会将推文分配给群集,该群集与推文相同。无论我使用的聚类算法或我如何为主题分配推文,我都无法找到如何检测趋势主题。

我对趋势群集/主题的理解或定义是,在某段时间内,它被分配的推文比其他群集更多。或者更新群集大小的频率高于其他群集。

如何将该定义转换为实际代码或数学模型是我无法解决的问题。

这是一个关于趋势群集大小如何发展的示例: enter image description here

如您所见,群集大小将为零,然后突然开始增加,因为现在它是一个热门话题,并且正在将推文分配给群集。一旦群集不再是热门话题,那么群集大小将保持相对静态。

2 个答案:

答案 0 :(得分:2)

您似乎正在尝试检测绘制的图形曲线的斜率高于某个阈值的情况。但是你没有连续的曲线,而是你有一个采样点,一个用于每个推文到一个簇的分配。两个这样的样本点在理论上可以定义一个斜率,但是这些斜率看起来非常颠簸:两个推文紧密连接在另一个无聊的话题上会突然变成趋势。为避免这种情况,您必须以某种方式平滑数据。一种可能的方式是使用滑动窗口,跨越固定的时间量(例如两小时)或固定数量的推文。所以你可以制定像

这样的门槛
  • 如果最后 x 分钟内的推文数量超过 y
  • ,则会出现趋势
  • 如果 y th -to-last tweet不超过 x 分钟前
  • ,这是趋势

作为这样的门槛,上面的两个公式实际上是等价的。如果您必须使用单个数字衡量时尚,那么这两者之间会有所不同。

如果这种简单的方法不适合你,你可能想在Cross Validated询问,你也可能会研究各种峰值检测算法,因为这实际上是在斜率函数中找到峰值的问题

答案 1 :(得分:0)

考虑到原始问题的日期,这可能为时已晚,但可能没有。考虑到您的问题后的时间,您可能有数据知道趋势线形状的样子。现在你所要做的就是将它标准化,例如在-1,0,1之间,并分析你的实时数据,也进行标准化,以获得匹配。如果实际数据与线形之间的差异低于阈值,则趋势正在进行中,您可以发出警报。