Neo4j欺诈检测场景异构图异常检测算法选型咨询
Neo4j场景下采购交易欺诈检测的图算法选型方案
适配前提
你的图结构定义清晰,三类节点、两类关系的模式完全适配采购欺诈检测的常规建模逻辑,核心要识别的「买方长期固定关联单一供应商」属于交易类欺诈的典型特征,所有选型都基于Neo4j原生GDS(Graph Data Science)库能力,不需要额外对接外部计算组件,开发成本最低。
- 节点类型:
supplier(供应商)、contract(合同)、buyer(买方) - 关系类型:
HasSupplier(合同指向对应供应商)、HasBuyer(合同指向对应买方)
分场景算法选型
1. 规则类明确异常快速检测
优先用基础统计算法落地,可解释性强、上线快,直接覆盖你提到的固定关联类特征:
- 度中心性计算:批量统计每个买方节点通过合同中转关联的去重供应商数量,对关联供应商数为1、且累计合同金额/份数超过设定阈值的买方,直接标记为「固定绑定供应商」可疑主体。用GDS的
gds.degree过程批量计算,比纯Cypher多层遍历效率高一个量级,千万级边规模下也能稳定出结果。 - 共现关系统计:给买方、供应商之间的合同共现路径打权重,权重值取双方关联的合同总金额、总份数,当某对买卖双方的关联权重占对应买方所有合同权重的100%时,就是完全无其他供应商备选的强绑定异常。
2. 隐式未知异常挖掘
规则覆盖不到的异常模式,用无监督图异常算法批量识别,不需要提前标注欺诈样本:
- 局部离群因子(LOF):先给每个节点构造特征向量(包含关联主体数、平均合同金额、合同时间间隔、关联主体的历史风险占比等维度),调用GDS的
gds.localOutlierFactor过程计算每个节点的离群得分,得分远高于同群体均值的主体直接标记为高风险——比如正常买方平均关联4-6家供应商,少数买方仅关联1家供应商且该供应商本身存在历史欺诈记录,LOF会自动把这类主体的风险分打高。 - 弱连通分量(WCC):按关联关系给全图节点划连通块,正常交易网络的连通块会随业务开展保持合理的规模扩张,如果出现极小连通块(仅包含1个买方、1个供应商、多份合同,和其他市场主体完全没有关联),就是典型的闭环自交易、虚开发票类欺诈特征。
- 节点相似度计算:调用
gds.nodeSimilarity过程批量计算买方之间的供应商重合度、供应商之间的买方重合度,如果一批买方的关联供应商列表100%重合,且注册信息、合同模板特征高度相似,就是典型的团伙欺诈。
落地参考
- 所有上述算法都是GDS库原生内置能力,直接在Cypher中调用存储过程即可,以度中心性计算为例,代码示例如下:
// 先投影需要计算的业务子图 CALL gds.graph.project( 'trade-graph', ['buyer', 'contract', 'supplier'], ['HasBuyer', 'HasSupplier'] ); // 批量计算节点关联度 CALL gds.degree.stream('trade-graph') YIELD nodeId, score RETURN gds.util.asNode(nodeId) AS node, score ORDER BY score DESC;
- 落地顺序建议先上规则类统计检测,把已知的固定关联类异常先覆盖完,再逐步叠无监督异常检测算法挖未知风险,不建议一开始就上图神经网络这类复杂模型,欺诈场景下可解释性优先级远高于模型复杂度,复杂模型的结果很难给业务侧讲清楚判定逻辑,落地阻力大。
- 检测出的异常标签可以直接存在Neo4j的节点属性里,后续做图可视化排查的时候,点开节点就能直接看到风险原因,排查效率比导出数据到外部系统高很多。
内容的提问来源于stack exchange,提问作者KYD
相关产品推荐
相关产品推荐

