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