2010-02-19 49 views
1

我必须跟踪,如果给予一个星期充满数据整数(40,30,25,55,5,40等)发出警告时,偏离规范发生('5'在以上情况)。一个更好的事情将是实际了解5星期是否为正常事件。算法的偏差

你知道在这个问题的红宝石实现吗?如果这是一个经典问题,问题/算法的名称是什么?

+7

这是一个典型的计算机科学问题的例子,“低于指定的算法”。 – 2010-02-19 03:37:16

+0

@Jonathan:同意,只是因为他要求的是一个工作实施,而不是一个如何进行的一般想法。 – dsimcha 2010-02-19 03:39:05

+0

你需要更具体一些。这些数字代表着什么?有一个普遍的倾向吗?什么定义了偏差?您的解决方案可以像运行平均值一样简单,也可以像使用小波变换一样复杂。 – rlbond 2010-02-19 03:44:08

回答

3

这是一个非常容易计算的东西,但您需要调整一个参数。你想知道任何给定的值是否与均值有X个标准偏差。要计算出该值,请计算标准偏差(请参阅Wikipedia),然后将每个值的偏差abs(mean - value)与均值相比较。如果一个数值的偏差是说,超过平均值的两个标准偏差,则将其标记出来。

编辑:

要由平日跟踪偏差,保持一个整数数组,每天一个。每次遇到偏差时,将当天的计数器加1。例如,您也可以使用双打,并保持当天的偏差百分比(num_friday_deviations/num_fridays)

+0

10如何扩展以了解每周的几天? – 2010-02-22 01:03:20

0

该算法的名称可以像“计算标准偏差”一样简单。

http://en.wikipedia.org/wiki/Standard_deviation

但是,你做任何分析应具体到数据集。您应该检查历史数据以获得正确的算法。除非您的数据是正态分布的,否则标准偏差根本不是一个好的衡量标准。您的数据甚至可能只是您想要查找超过某个最大值的数字......这取决于您的数据。

所以,我给你的建议是:

1)谷歌为统计概览和基本统计​​资料读了。

2)检查您有任何历史数据。

3)想出一些奇数的合理度量。

4)根据历史数据测试您的测量结果,看看它是否突出显示您认为应该的数字。

5)根据需要重复步骤2-4以优化您的算法。

+0

#3:(n%2)== 1:P – klochner 2010-02-19 09:18:26

2

这通常被称为“异常检测”,如果你是谷歌的话,那里有很多工作。纸Mining Deviants in Time Series Data Streams可能会帮助您满足您的特定需求。

从抽象:

我们本第一个已知的算法用于识别大量数据流的反常。我们的算法使用非常小的空间监测 流(数据中的多对数 大小),并且随着数据流随着时间的推移而发生变化,能够在任何瞬间快速找到差异数, 。