代码之家  ›  专栏  ›  技术社区  ›  xyzzyrz

了解测量趋势的算法

  •  18
  • xyzzyrz  · 技术社区  · 15 年前

    这个公式的基本原理是什么? hive_trend_mapper.py 程序 this Hadoop tutorial 关于计算维基百科趋势?

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

    在日常趋势中, 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+total_pageviews ( log(1)==0 ,所以这个比例因子是非负的)。它可以被看作是把一个月的总页面视为一个重量,但随着它的增长而变温和——这样,总的页面浏览量不会对那些“足够受欢迎”的东西产生影响,但与此同时,对无关紧要的重大改变也不会得到同样的重视。

    但是 为什么? 这样做吗?为什么我们要打折那些最初不受欢迎的东西?大三角洲不重要吗 更多 对于持续受欢迎度较低的项目,以及 较少的 对于那些已经很流行的项目(对于那些大的delta可能在标准差的一小部分之内)?作为救命稻草,为什么不干脆 y2-y1 就这样结束了?

    那么 error 有用吗?本教程不再真正有意义地使用它。再说一次,它不能告诉我们 trend 也被使用了-这是最终产品中绘制的,对吗?

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

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

    4 回复  |  直到 12 年前
        1
  •  10
  •   Dingle    15 年前

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

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

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

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

        2
  •  1
  •   ty812    15 年前

    代码实现了统计(在本例中是“基线趋势”),您应该了解这一点,一切都会变得更清楚。维基有一个很好的 instroduction .

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

    error 是系统预期的预测误差范围。更高 错误 这一趋势越不可能像预期的那样继续下去。

        3
  •  1
  •   Simon    15 年前

    按点击量调整度量的原因不是惩罚流行页面,而是确保您可以将大小变化与单个度量进行比较。如果您只使用y2-y1,您将只能在大容量页面上看到单击更改。这正试图表达的是“重大”变化。如果你吸引了100次点击,那么1000次点击的变化是非常显著的。1000点击改变如果你吸引100000是较少的。这个公式所要做的是使这两个都可见。

    在excel中以不同的比例尝试一下,你会对它的操作有一个很好的了解。

    希望能有所帮助。

        4
  •  1
  •   umar    15 年前

    另一种看法是:

    假设你的页面和我的页面是在同一天创建的,你的页面的总浏览量约为1000万,而我的页面的总浏览量约为100万。那么假设某个点的斜率对我来说是100万,对你来说是50万。如果你只使用slope,那么我赢了,但是你的页面在那一点上已经有了更多的浏览量,urs有500万,而我的页面有100万,所以我的页面上有100万仍然是200万,那一天urs是550万。所以这个缩放的概念可能是试图调整结果显示UR页面作为趋势设定器也是好的,并且它的斜率比较小,但是它已经比较流行了,但是缩放只是一个日志因素,所以对我来说似乎没有太大的问题。