1

我正在寻找一种工具或系统来查看数据库并识别不寻常的值。我不需要任何东西来进行实时检查,只需要一个在夜间或预定点进行处理的系统。我正在寻找两个级别的系统:

  1. 数据库范围:例如:比较所有员工的薪水,并找出与平均值相比太低或太高的薪水。

  2. 每个员工:例如:检查员工的工资历史记录并确定员工的异常付款。

以上两个只是例子,以ATM取款、购物订单历史、发票历史等为例。

4

4 回答 4

0

困难的部分是定义“与众不同”。

您正在尝试做的是什么欺诈检测软件来确定某人何时洗钱。您的简单示例很简单。更复杂的是使用包含大量规则的数据库、统计数据、数据挖掘和规则引擎来完成。这不是一个简单的问题,除非您想将自己限制在您引用的琐碎案例中。

如果你设法把它变成一个简单的问题,你就会成为一个富有的人。祝你好运。

于 2010-01-17T13:20:10.047 回答
0

您可以使用 Analysis Services 和数据挖掘模型。

显然你必须修改代码,但这里有一个来自 Microsoft 的示例:

http://www.sqlserverdatamining.com/ssdm/Default.aspx?tabid=101&Id=83

“此示例展示了如何通过使用 PredictCaseLikelihood() 函数使用聚类算法执行自动数据验证。要练习该示例,请在表单中输入值并单击提交按钮。如果值的组合具有合理的可能性,表单将接受这些值。如果不是,预测查询的其他元素表明该值可能是不可接受的。选中表单上的“显示详细信息”框将显示除了使用的概率比率之外发送的查询来确定异常值。”

于 2010-01-18T05:22:07.717 回答
0

查找异常值有不同的方法:基于距离的、基于聚类的等。

您可以使用 Data Applied 的异常值检测或聚类分析。第一个自动查找与其 N 个最近邻居最不同的记录。第二个查找记录的大组(集群),并识别不适合任何集群的记录。他们为小型数据集免费提供,而且是在线的 ( http://www.data-applied.com )。您不必编写代码,但如果您愿意,可以使用他们的 Web API。

于 2010-01-20T18:21:24.390 回答
0

我目前没有安装 MySQL,但我想第一个可以通过与此类似的查询来实现(在我的脑海中,未经测试,根本无法工作):

SELECT name, salary FROM emp WHERE salary>(SELECT AVG(salary) FROM emp);

或者,更复杂的查询是:

SELECT name, salary from emp WHERE salary - (SELECT AVG(salary) FROM emp) >
        (SELECT AVG(salary - (SELECT AVG(salary) FROM emp)) FROM emp);

第二个基本上是选择工资与平均工资相差超过所有员工工资平均差的员工。

让我知道它是否有效。

于 2010-01-17T12:45:45.153 回答