内容:
我有一组网站,每天记录访问量:
W0 = { 30, 34, 28, 30, 16, 13, 8, 4, 0, 5, 2, 2, 1, 2, .. }
W1 = { 1, 3, 21, 12, 10, 20, 15, 43, 22, 25, .. }
W2 = { 0, 0, 4, 2, 2, 5, 3, 30, 50, 30, 30, 25, 40, .. }
...
Wn
一般问题:
- 如何确定哪些站点最活跃?
我的意思是最近几天访问量增加或访问量突然增加。出于说明目的,在上面的小示例中,W0最初会很流行,但开始表现出抛弃状态,W1表现出稳定的人气(带有一些孤立的峰值),W3处于平静的启动之后是重要的上升)。
最初的想法:
// pageviews for most recent day
y2 = pageviews[-1]
// pageviews for previous day
y1 = pageviews[-2]
// Simple baseline trend algorithm
slope = y2 - y1
trend = slope * log(1.0 +int(total_pageviews))
error = 1.0/sqrt(int(total_pageviews))
return trend, error
这看起来既好又容易,但是我遇到了问题。
该计算基于斜率。很好,这是我感兴趣的功能之一,但是恕我直言,它在非单调系列中存在问题。想象一下,在某些日子里,访问次数恒定(因此坡度= 0),那么上述趋势将为零。
问题:
- 如何处理两种情况(单调增加/减少)和大量匹配?
- 我应该使用单独的公式吗?