关于任意数列的回归测试

Alf*_*lfe 12 python statistics numbers machine-learning regression-testing

我试图想出一种回归测试数字序列的方法.

我的测试系统会为每个系统版本生成大量数字(例如高度,宽度,深度等).这些数字因版本不同而有所不同.给定一系列"好"版本和一个"新"版本,我想找到最不正常的序列.

例:

"好"版本:

version    width   height   depth
   1        123      43      302 
   2        122      44      304
   3        120      46      300
   4        124      45      301
Run Code Online (Sandbox Code Playgroud)

"新版本:

   5        121      60      305
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我显然希望找到高度序列,因为值60比宽度或深度更突出.

我当前的方法计算好案例的每个序列的均值和标准差,并且对于新版本的数字,它计算该数字是该序列的一部分的概率(基于已知的均值和标准偏差).这工作......有点儿.

我的序列中的数字不一定是高斯分布在平均值附近,但通常是相当恒定的,有时只会产生异常值,这似乎也是相当恒定的,例如10,10,10,10,10,5,10,10在这种情况下,仅基于平均值和标准偏差,值10不会100%可能在序列中,并且值5将是不太可能的.

我考虑使用直方图方法,并在那里先犹豫不决.直方图的问题在于我需要为每个序列存储大量信息(与平均值和标准差相反).

我想到的下一个方面是,我非常确定这种任务不是新的,并且可能已经有一些解决方案可以很好地适应我的情况; 但我在研究中发现并不多.

我发现像PyBrain这样的库,乍一看似乎处理数字序列,然后显然试图用模拟神经网络分析这些.我不确定这对我来说是不是一种方法(而且似乎我必须为每个数字序列存储大量数据,如完整的神经网络).

所以我的问题是:

是否有技术,算法或科学学科可以帮助我分析数字序列以找出异常(在最后一个值中)?最好每个序列只存储少量数据;-)

对于具体的实现,我更喜欢Python,但也欢迎其他语言的提示.

小智 1

您可以使用称为高斯过程 (GP) 的回归技术来学习曲线,然后将高斯过程应用于序列中的下一个示例。

由于 GP 不仅为您提供目标的估计值,还提供置信度,您可以根据置信度设置阈值来确定异常值。

为了实现这一点,存在各种工具箱(scikits.learn、shogun...),但最简单的可能是 GPy。以下笔记本中很好地描述了一个一维回归的示例,您可以调整该示例来让您的任务顺利进行:

http://nbviewer.jupyter.org/github/SheffieldML/notebook/blob/master/GPy/basic_gp.ipynb