我想检测银行交易记录和GL条目中的意外交易。 对于供应商而言,金额通常为每月2000美元或5000美元,但突然发生了10 000美元或200美元的交易,这是出乎意料的。 我将有多个列参与此异常检测:客户,供应商,帐号,交易描述,用户输入交易(GL方面)等...
我的数据在SQL Server中,所以我正在寻找在TSQL中工作的示例代码。否则我可以依赖R脚本。
感谢您的帮助。
答案 0 :(得分:0)
可能不完全是您正在寻找的内容,但使用Azure Machine Learning Studio,您可以使用One-Class分类器创建一个根据阈值检测异常的实验。您可以轻松地从SQL Server中提供数据。
这可能是一种矫枉过正,但您可以使用免费版本,这超出了您的需要。
答案 1 :(得分:0)
一个选项是使用SQL窗口函数来获取交易金额的标准差,并查找超过1个标准差的条目。
CREATE TABLE #tmp(
Customer nvarchar(255),
Supplier nvarchar(255),
AccountNumber nvarchar(255),
STD decimal(20, 2),
Amount decimal(20, 2))
INSERT INTO #tmp (Customer, Supplier, AccountNumber, Amount, STD)
SELECT Customer, Supplier, AccountNumber, Amount,
ABS(STDEV(Amount) OVER (PARTITION BY Customer, Supplier, AccountNumber))
FROM SourceTable
SELECT *
FROM #tmp
WHERE STD >= 1