Algorithm 理解测量趋势的算法

Algorithm 理解测量趋势的算法,algorithm,Algorithm,计算维基百科趋势的hive\u trend\u mapper.py程序中使用的公式背后的原理是什么 实际上有两个组成部分:月趋势和日趋势。我将关注每日趋势,但类似的问题也适用于每月趋势 在每日趋势中,pageviews是此主题每天的页面浏览量数组,每天一个元素,total_pageviews是此数组的总和: # pageviews for most recent day y2 = pageviews[-1] # pageviews for previous day y1 = pageviews[

计算维基百科趋势的
hive\u trend\u mapper.py
程序中使用的公式背后的原理是什么

实际上有两个组成部分:月趋势和日趋势。我将关注每日趋势,但类似的问题也适用于每月趋势

在每日趋势中,
pageviews
是此主题每天的页面浏览量数组,每天一个元素,
total_pageviews
是此数组的总和:

# 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
我从表面上知道它在做什么:它只是查看过去一天的变化(
slope
),并将其放大到
1+总页面浏览量的对数(
log(1)==0
,所以这个比例因子是非负的)。这可以被看作是把一个月的总浏览量当作一个权重,但随着它的增长,总浏览量会有所缓和——这样一来,总浏览量就不再对“足够受欢迎”的事物产生影响,但与此同时,对无关紧要的事物的大的改变就不会有那么大的影响

但为什么要这样做呢?为什么我们要对最初不受欢迎的东西打折扣?大增量对持续受欢迎程度较低的项目是否更重要,对已经受欢迎的项目(大增量可能在标准偏差的一小部分范围内)是否更重要?作为一个稻草人,为什么不干脆拿着
y2-y1
干掉它呢

那么
错误
有什么用处呢?本教程不再有意义地使用它。再说一遍,它也没有告诉我们如何使用
trend
——这是在最终产品中绘制的,对吗

我在哪里可以阅读(最好是介绍性的)理论背景?这种疯狂有名字吗?这是教科书上的公式吗


提前感谢您的回答(或讨论!)。

代码实现了统计信息(在本例中为“基线趋势”),您应该对此进行自我教育,一切都会变得更加清晰。Wikibooks有一个很好的例子

该算法考虑到,根据定义,新页面比现有页面更不受欢迎(例如,因为它们是从相对较少的其他地方链接而来的),并建议随着时间的推移,这些新页面将越来越受欢迎


error
是系统预期的预测误差。错误越大,趋势越不可能像预期的那样继续。

通过点击量来调整衡量标准的原因不是为了惩罚流行页面,而是为了确保您可以用单个衡量标准来比较大小变化。如果你只使用y2-y1,你只会在大容量页面上看到点击变化。这试图表达的是“重大”变化。如果你吸引了100次点击,1000次点击就会改变,这真的很重要。如果你吸引100000人,点击1000次“更改”就不那么重要了。这个公式试图做的是让这两个都可见

在Excel中以几种不同的比例进行尝试,您将很好地了解它的运行方式


希望能有所帮助。

另一种看待它的方式是:


假设你的页面和我的页面是在同一天制作的,你的页面总浏览量约为1000万,我的页面总浏览量约为100万。那么假设某个点的斜率对我来说是一百万,对你来说是五十万。如果你只使用slope,那么我赢了,但是你的页面在那一点上已经有了每天更多的浏览量,urs有500万,我的100万,所以我的100万仍然是200万,urs在那一天是550万。因此,这种缩放概念可能是为了尝试调整结果,以表明ur页面也可以作为趋势设定器,其坡度较小,但已经比较流行,但缩放只是一个日志因素,所以对我来说似乎没有太大问题。

正如在线评论所说,这是一个简单的“基线趋势算法”, 这基本上意味着,在比较两个不同页面的趋势之前,你必须确定 基线。在许多情况下,使用平均值,如果 根据时间轴绘制页面视图。这种方法在监测中得到了广泛的应用 水质、空气污染物等,以检测基线的任何重大变化

在OP的情况下,页面浏览量的斜率由totalpageviews的日志加权。 此排序使用totalpageviews作为坡度的基线校正。正如西蒙所说,这是一种平衡 在两个页面之间,总浏览量非常不同。 对于exmaple,A的总浏览量为500,总浏览量为1000000;B的总浏览量为1000,总浏览量为1000。 日志基本上意味着1000000只比1000重要两倍(而不是1000倍)。 如果你只考虑坡度,A比B更不受欢迎。 但就权重而言,现在衡量a受欢迎程度的标准与B相同。我认为这相当直观: 虽然A的页面浏览量只有500次,但那是因为它已经饱和了,你还是要给它足够的信任

至于误差,我相信它来自(相对),它有一个因子1/sqrt(n),其中 n是数据点的数量。在代码中,误差等于(1/sqrt(n))*(1/sqrt(平均值))。 它大致可以转化为:数据点越多,趋势越准确。我不明白 这是一个精确的数学公式,只是一个野蛮的趋势分析算法,不管怎么说是相对的 在这种情况下,价值更为重要


总之,我相信这只是一个经验公式。更高级的主题可以在一些生物统计学教科书中找到(非常类似于监测流感爆发或类似情况)。

我不懂。对数比例因子明显地增加了热门项目的分数。在Python中:[(1000100),(1000100000)][(10004615.1205168412598),(100011512.935464920229)](d,d*math.log(1.+t)]对于(d,t)在[(10004615.1205168412598),(100011512.935464920229)],我和谷歌都找不到Wikibook基线趋势的引入点。你有指针吗?那本书正在处理基本的统计数据,你应该读哪一本