如何检测数据库中的异常数据点

我目前有一个数据库,其中包含一些标记错误的价格数据。

示例数据:

Product - Price - SalesDateProdA  - 10  - 1/1/2016ProdB  - 20  - 1/2/2016ProdA  - 100 - 1/3/2016ProdB  - 20  - 1/4/2016ProdB  - 21  - 1/5/2016ProdA  - 11  - 1/6/2016

在这个数据集中,记录“ProdA – 100 – 1/3/2016”是有错误的。很可能是输入价格的人犯了打字错误。此外,不同日子上的ProdA可能会改变其价格,这使得这个问题变得有趣。

有什么工具可以帮助我识别这种类型的记录?SQL能帮助我检测异常数据点吗?我应该开始研究机器学习来解决这个问题吗?


回答:

这个问题有点主观,但你可以识别那些数值与平均值相差最远的行。我会通过计算z分数并查看最大/最小的z分数来做到这一点。

z分数是数值减去平均值再除以标准差。这里是一个计算的例子:

select t.*,       (price - avg_price) / nullif(std_price, 0) as z_pricefrom t join     (select product, avg(price) as avg_price, stdev(price) as std_price      from t      group by product     ) tt     on t.product = tt.productorder by abs(z_price) desc;

标准差的函数可能会因你使用的数据库而异,但大多数数据库都支持这种函数。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注