最后更新于2017年11月6日星期一21:16:16 GMT

Here at Logentries 我们不断增加分析日志生成数据的选项. 查询语言 ‘LEQL’ 是否有一些统计功能和最近添加的功能是新的 标准偏差 calculation.

LEQL查询示例
其中(image=debian) groupby(location)计算(standarddeviation:usage)
与这个新函数相关的一个有趣的点是,其实现的核心是计算 ‘variance’ 使用一种特定类型的算法-即“在线”算法的数据. 一旦找到了“方差”,那么标准差就是这个“方差”值的平方根. 挑战在于找到一系列数据点的“方差”, 在事先不知道会有多少数据点的地方.

Online Algorithm

An ‘online’ 算法是设计用来处理按顺序到达的输入数据的算法, 而且不是一个完整的集合. 以日志事件为例, 这种类型的数据一个事件接一个事件地依次到达. 一种“在线”算法被设计用来处理每一个新的数据片段或记录事件,以产生最终结果. 还要注意,这样的算法在设计时并没有对可能到达的未来数据进行任何假设, 比如有多少事件,什么时候发生. 这些都是算法设计者必须考虑的未知因素.

与之相反的是“离线”算法,即同时向算法提供感兴趣的完整数据集. 因此,“离线”算法将以已知的固定数量的数据点开始和结束.

试图建立任何一种类型的性能, 对于“离线”算法来说,“对于每个请求序列”更容易, 这样的算法会选择成本最小的行动序列。”. “在线”算法的困难在于,无论在线算法对初始请求序列采取什么行动, 接下来的一系列请求会让算法看起来很愚蠢。”. 关于这方面的进一步研究,请参见 [Karp 1992].

正如在 [Karp 1992] “在线”算法所产生的成本的一个衡量标准是它的“竞争比率”。, 成为“最大值”, 对所有可能的输入序列求和, 在线算法的成本与最优离线算法的成本之比. 最优在线算法是竞争比最小的算法。. 当然,找到这个比率说起来容易做起来难, 还要注意,并非所有的“在线”算法都有匹配的“离线”等效算法.

B. P. Welford

早在互联网出现之前,对这些问题的研究就已经开始了,这些问题产生了这些算法. 值得注意的是,这些工作是在什么时候完成的,从而产生了对计算如此关键的算法, 今天的电信和互联网. 关于“在线”方差算法,这源于科学家B的工作. P. 威尔福德出版了 a paper in 1962 “一种计算修正平方和和乘积的方法”,并提供一种只使用一次且不需要存储值的解决方案.

标准偏差

The 标准偏差 是对一组数据点离散度的测量吗. 低值表明数据点集趋向于接近平均值(期望值)。. 简单来说,一组数据点的标准差是方差的平方根. 这就提出了一个问题,即如何在数据点的数量及其值未知的情况下找到数据序列的方差. 这就是“在线”方差由B完成的地方. P. 威尔福德是相关的. 根据从“样本”数据集计算给定总体的标准偏差估计值或使用完整的“总体”数据集计算,有两种方法可以找到方差. 下面的代码示例显示了这两种方法的方法.

下面的代码示例是在Java中实现的一个名为“StandardDeviation”的类,其中使用“在线”算法作为查找单个数据点序列的标准偏差的基础. 它是基于一个实现的例子 塞奇威克和韦恩. There is also a JUnit Test Class 使用两种测试方法——每一种都使用相同的数字序列作为数据——但其中一个版本测试结果的“样本”标准偏差, 另一个是总体标准差.

带有标准偏差的Java类(在线算法实现)

在上面的类中,setValues方法将在从序列中获取每个值时累积数据, one at a time. The simple, 然而,在“样本”和“总体”两种方法的计算中可以看到显著的差异 getVarianceSample () and getVariancePopulation (). 一旦找到方差,标准差就是这个方差的平方根.

具有标准偏差测试方法的JUnit类

在上面的JUnit测试类中,有2个几乎相同的测试方法来执行标准偏差类. 两个方法中的步骤[1]到[3]是相同的——[1]创建了一个新对象, [2]生成一个数字列表, 对于两种测试方法和[3],使用相同的值,数字列表(序列)每次将一个数字提供给 'sd.setValues()' method. 方法之间的差异在[4]asserequals中可以看到-在一种方法中,我们使用“样本”方差计算获得标准差,而在另一种方法中,我们使用“总体”计算. 可以看到,结果值非常不同.

References

请注意,Logentries不对外部网站的内容承担任何责任.

  1. 视频:逻辑查询语言(LEQL)
  2. 维基百科:标准差
  3. 维基百科:方差
  4. 维基百科:在线算法
  5. JUnit
  6. 大学网站:算法,第4版. 作者:塞奇威克和韦恩
  7. 引用本文:Welford, B.P., 1962. 关于计算修正平方和和乘积的方法的说明. 技术计量学,4(3),pp.419-420.
  8. 引用本文:Karp, R.M., 1992, August. 在线算法与离线算法:知道未来值多少钱?.
    在IFIP大会(1)(卷. 12, pp. 416-429).

使用LEQL分析函数标准偏差检查机器数据中数据点的分布. 今天就免费试用30天, get started.