Python 任意数序列的回归检验

Python 任意数序列的回归检验,python,machine-learning,statistics,numbers,regression-testing,Python,Machine Learning,Statistics,Numbers,Regression Testing,我正试图想出一种回归测试数字序列的方法 我正在测试的系统为每个系统版本生成大量的数字(例如高度、宽度、深度等)。这些数字以未知的方式因版本而异。给定一系列“好”版本和一个“新”版本,我想找出最不正常的序列 例如: “良好”版本: “新”版本: 在本例中,我显然希望找到高度序列,因为值60比宽度或深度更突出 我目前的方法计算每个良好案例序列的平均值和标准偏差,对于新版本的编号,它计算该编号属于该序列的概率(基于已知的平均值和标准偏差)。这…有点管用 我的序列中的数字不一定是围绕平均值的高斯分布,但

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

我正在测试的系统为每个系统版本生成大量的数字(例如高度、宽度、深度等)。这些数字以未知的方式因版本而异。给定一系列“好”版本和一个“新”版本,我想找出最不正常的序列

例如:

“良好”版本:

“新”版本:

在本例中,我显然希望找到高度序列,因为值60比宽度或深度更突出

我目前的方法计算每个良好案例序列的平均值和标准偏差,对于新版本的编号,它计算该编号属于该序列的概率(基于已知的平均值和标准偏差)。这…有点管用

我的序列中的数字不一定是围绕平均值的高斯分布,但通常是相当恒定的,只是有时会产生一个似乎也相当恒定的离群值,即。G10, 10, 10, 10, 10, 5, 10, 10, 10, 5, 10, 10, 10. 在这种情况下,仅基于平均值和标准偏差,值10不可能100%出现在序列中,值5也不太可能出现

我考虑使用柱状图方法,并犹豫是否先在这里提问。直方图的问题是,我需要为每个序列存储相当多的信息(与平均值和标准偏差相反)

我想的下一个方面是,我非常确定这类任务不是新任务,可能已经有适合我情况的解决方案;但我在研究中发现的不多

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

所以我的问题是:

是否有一种技术、算法或科学学科可以帮助我分析数字序列以发现异常(最后一个值)?最好在每个序列只存储少量数据的情况下;-)


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

我想知道数据中的不同列是否可以以不同的方式处理?例如,是否适合使用“接近平均值”检查来处理宽度;另一列写着“在一组好例子中看到的价值”;第三列可以用“从好例子的K-均值聚类中得到的现有聚类”来处理

您可以为每一列打分,并标记任何一个或多个列不适合的新值,并说明原因

嗯,它不限于单个列-例如,如果列值之间存在某种关系,那么也可以检查-可能宽度乘以高度是有限的;或者说音量有限制

时间:可能是连续值只能以某种给定方式偏离某个值-例如,如果某个机器人连续改变侧面,且测量之间的时间足够短,然后,这将限制连续读数之间的增量值,使之与机器人机构正常工作时可能产生的增量值相同

我猜这个答案的很大一部分是使用您关于数据源的任何知识来提供帮助

有没有技术、算法或科学学科 这将帮助我分析数字序列以发现异常(在 最后一个值是多少

您正在寻找的科学显示称为异常值检测/异常检测。你可以使用很多技术和算法。作为一个起点,不妨看看维基百科和。还有一个类似的问题,其中一个是关于python的

您还应该考虑在您的情况下,什么是更糟糕的,误报(类型1错误)或误报(类型2错误),因为减少其中一种错误类型的百分比会增加另一种错误类型的百分比

编辑:考虑到您的需求在某些情况下具有多个峰值,而在其他情况下具有平坦分布,这样的算法可以工作:

1.)计算序列中每个数字的出现次数,并将计数放在与该数字对应的箱子中(初始箱子宽度=1)

2.)遍历存储箱:如果单个存储箱的计数超过序列中总值的10%(参数a),则将该存储箱的编号标记为“良好值”

3.)将料仓宽度增加1,并重复步骤1和2

4.)重复步骤1-3,直到序列中90%(参数b)的数字标记为“良好值”

5.)让错误值的测试用例失败

此算法应适用于以下情况:

  • 带有一些异常值的单个大峰值

  • 多个大峰值和中间的一些异常值

  • 集中在某一区域(或多个区域)的平坦分布

  • 所有数字相等的数字序列

参数a和b必须根据您的需要进行调整,但我认为这并不难


注意:要检查某个值所属的存储箱,可以使用模运算符(%),例如,如果存储箱大小为3,且值为475476477478479,则根据其与存储箱大小的模为零的值来命名存储箱->477%3=0->放置477,478,您可以使用一种称为高斯过程(GP)的回归技术来学习曲线,然后应用
version    width   height   depth
   1        123      43      302 
   2        122      44      304
   3        120      46      300
   4        124      45      301
   5        121      60      305