BulletTech官方微信

V2

2022/04/10阅读:27主题:自定义主题1

Neo4J图数据库反欺诈分析实战(四) - 风险评分

Neo4J图数据库反欺诈分析实战(四) - 风险评分

1 前言

Neo4J图数据库反欺诈系列文章到此将识别出危险用户,本期内容将讲解对每个客户进行风险评分。如需要复习前文,可以直接跳转链接:

2 寻找相似节点

上回通过弱连接分量(Weakly Connected Components)[1]算法对数据进行了聚类。接下来可以在每个簇中寻找彼此相似的客户。

WCC聚类结果

该步骤使用节点相似度(Jaccard值[2])进行判断,节点相似度算法需要图结构中有两种节点,因此创建Similarity图,里面包含客户和实体信息两种节点,以及对应的关系。

CALL gds.graph.project.cypher('Similarity',
'MATCH(c:Client)
    WHERE exists(c.firstPartyFraudGroup)
    RETURN id(c) AS id,labels(c) AS labels
UNION
MATCH(n)
    WHERE n:Email OR n:Phone OR n:SSN
    RETURN id(n) AS id,labels(n) AS labels'
,
'MATCH(c:Client)
-[:HAS_EMAIL|:HAS_PHONE|:HAS_SSN]->(ids)
WHERE exists(c.firstPartyFraudGroup)
RETURN id(c) AS source,id(ids) AS target'
)
YIELD graphName,nodeCount,relationshipCount;

创建图之后就可以运行节点相似度算法(注意:该算法支持加权,详见文档):

CALL gds.nodeSimilarity.stream('Similarity',{topK:15})
YIELD node1,node2,similarity
RETURN gds.util.asNode(node1).id AS client1,
    gds.util.asNode(node2).id AS client2,similarity
ORDER BY similarity;

使用Mutate模式将结果写入内存中的图中,创建了一个新的关系SIMILAR_TO。至此,相似的节点对之间将可以用jaccardScore衡量相似性:

CALL gds.nodeSimilarity.mutate('Similarity',{topK:15,
  mutateProperty:'jaccardScore', mutateRelationshipType:'SIMILAR_TO'});

-- 将结果从内存中的图写入数据库
CALL gds.graph.writeRelationship('Similarity','SIMILAR_TO','jaccardScore');

3 创建风险评分

接下来使用节点中心度算法[3]结合上述生成的相似度指标生成一个firstPartyFraudScorefirstPartyFraudScore分越高,代表其在一个簇里和越多的客户有更多相似的实体信息,即越危险。

CALL gds.degree.write('Similarity',{nodeLabels:['Client'],
    relationshipTypes:['SIMILAR_TO'],
    relationshipWeightProperty:'jaccardScore',
    writeProperty:'firstPartyFraudScore'});
风险评分

最后选用80分位数为阈值标记危险的客户,在实际应用中,也可以直接使用firstPartyFraudScore作为一个单独的特征融合进反欺诈策略或者模型。

MATCH(c:Client)
WHERE exists(c.firstPartyFraudScore)
WITH percentileCont(c.firstPartyFraudScore, 0.8)
    AS firstPartyFraudThreshold
MATCH(c:Client)
WHERE c.firstPartyFraudScore>firstPartyFraudThreshold
SET c:FirstPartyFraudster;

4 总结

至此,识别关系网络中的欺诈罪犯实战系列就告一段落了,通过这一系列的文章,认识和巩固了如下知识点:

  • 图的基本结构
  • Neo4J图数据库查询语句Cypher常用命令
  • 反欺诈应用中常见的算法

希望这次实战系列的分享对你有帮助,欢迎在评论区留言讨论!

参考资料

[1]

Weakly Connected Components: https://neo4j.com/docs/graph-data-science/current/algorithms/wcc/

[2]

节点相似度: https://neo4j.com/docs/graph-data-science/current/algorithms/node-similarity/#algorithms-node-similarity

[3]

Degree Centrality: https://neo4j.com/docs/graph-data-science/current/algorithms/degree-centrality/

分类:

人工智能

标签:

人工智能

作者介绍

BulletTech官方微信
V2