GraphGists

这个交互式的 Neo4j 图教程涵盖了常见的信用卡欺诈检测场景。

问题介绍

银行、商家和信用卡处理公司每年因信用卡欺诈损失数十亿美元。犯罪分子可以使用各种方法窃取信用卡数据。蓝牙启用的数据窃取设备可以放置在加油泵的读卡器上。数据可能在黑客攻击大型零售商时被盗,就像近年来塔吉特和家得宝发生的那样。有时,犯罪分子只是杂货店或餐厅收银台的店员,他们会用小设备刷受害者的卡或偷偷记下卡号。


典型场景

2013 年 12 月,宾夕法尼亚州阿宾顿的警察逮捕了两名邮局员工,他们窃取了信用卡信息,并用这些信息购买了价值超过 50,000 美元的商品。他们的骗局非常典型,以下是他们的操作方式

  • 邮局职员在处理交易时复制了一些客户的信用卡信息;

  • 然后他们找到这些客户的家庭住址;

  • 他们使用信用卡号码在网上订购商品或礼品卡,并将其送到受害者的家庭地址;

  • 对于在线订购的商品,一名同伙会在地址处等待拦截送货;

这对搭档在邮局顾客报告一名男子试图拦截他家中的一件包裹后不久被捕,但在此之前,这对搭档已经用欺诈获得的信息购买了圣诞礼物并进行了度假。


解决方案说明

图数据库可以帮助更快地找到信用卡盗窃者。通过将交易表示为图,我们可以寻找欺诈案件中的共同点,并找到骗局的起源点。

信用卡欺诈图数据模型

一系列信用卡交易可以表示为图。每次交易都涉及两个节点:一个人(客户)和一家商家。这些节点通过交易本身连接起来。交易有日期和状态。

合法交易的状态为“无争议”。欺诈性交易为“争议”。

下面的图数据模型表示了数据作为图的样子。

Credit Card Fraud
图 1. 信用卡欺诈

示例数据集

您可以在此处下载完整的数据集:https://www.dropbox.com/s/4uij4gs2iyva5bd/credit%20card%20fraud.zip

识别欺诈性交易

我们收集所有欺诈性交易。

MATCH (victim:Person)-[r:HAS_BOUGHT_AT]->(merchant)
WHERE r.status = "Disputed"
RETURN victim.name AS `Customer Name`, merchant.name AS `Store Name`, r.amount AS Amount, r.time AS `Transaction Time`
ORDER BY `Transaction Time` DESC

识别欺诈的起源点

现在我们知道哪些客户和哪些商家参与了我们的欺诈案件。但是我们正在寻找的罪犯在哪里?这里有助于我们的是每个欺诈性交易的交易日期。

我们正在寻找的罪犯参与了一次合法的交易,在此期间他窃取了他的受害者的信用卡号码。之后,他就可以执行他的非法交易。这意味着我们不仅想要非法交易,还要在盗窃之前发生的交易。

MATCH (victim:Person)-[r:HAS_BOUGHT_AT]->(merchant)
WHERE r.status = "Disputed"
MATCH (victim)-[t:HAS_BOUGHT_AT]->(othermerchants)
WHERE t.status = "Undisputed" AND t.time < r.time
WITH victim, othermerchants, t ORDER BY t.time DESC
RETURN victim.name AS `Customer Name`, othermerchants.name AS `Store Name`, t.amount AS Amount, t.time AS `Transaction Time`
ORDER BY `Transaction Time` DESC

锁定罪犯

现在我们想找到共同点。在所有这些看似无害的交易中是否有一个共同的商家?我们只需要调整 Cypher 查询,根据我们看到每个商家的次数对之前的结果进行排序。

MATCH (victim:Person)-[r:HAS_BOUGHT_AT]->(merchant)
WHERE r.status = "Disputed"
MATCH (victim)-[t:HAS_BOUGHT_AT]->(othermerchants)
WHERE t.status = "Undisputed" AND t.time < r.time
WITH victim, othermerchants, t ORDER BY t.time DESC
RETURN DISTINCT othermerchants.name AS `Suspicious Store`, count(DISTINCT t) AS Count, collect(DISTINCT victim.name) AS Victims
ORDER BY Count DESC
Where is the thief?
图 2. 窃贼在哪里?

在每次欺诈性交易中,持卡人都在几天前访问了沃尔玛。现在我们知道窃取客户信用卡号码的位置和日期。使用像 Linkurious 这样的图可视化解决方案,我们可以检查数据以确认我们的直觉。现在我们可以向当局和商家报告这种情况。他们应该有足够的信息来继续进行调查!

有关更多与图相关的用例,请务必查看 Linkurious 的博客:https://linkurio.us/blog