知识图谱在金融风控中的应用
原创
灵阙教研团队
S 精选 进阶 |
约 7 分钟阅读
更新于 2026-02-27 AI 导读
知识图谱在金融风控中的应用 反欺诈、反洗钱与信用风控的图谱化实战 | 2026-02 一、为什么金融风控需要知识图谱 传统风控依赖规则引擎和机器学习模型,处理的是"单点特征":一个人的年龄、收入、征信分。但欺诈和洗钱的本质是"关系网络"中的异常模式:一群人通过复杂的资金链条、担保关系、股权嵌套来隐藏真实意图。 知识图谱将"关系"显式化,让风控从"看单点"升级为"看网络": 传统风控视角(单点):...
知识图谱在金融风控中的应用
反欺诈、反洗钱与信用风控的图谱化实战 | 2026-02
一、为什么金融风控需要知识图谱
传统风控依赖规则引擎和机器学习模型,处理的是"单点特征":一个人的年龄、收入、征信分。但欺诈和洗钱的本质是"关系网络"中的异常模式:一群人通过复杂的资金链条、担保关系、股权嵌套来隐藏真实意图。
知识图谱将"关系"显式化,让风控从"看单点"升级为"看网络":
传统风控视角(单点):
申请人A -> 特征向量 -> 模型打分 -> 通过/拒绝
图谱风控视角(网络):
申请人A -[担保]-> B -[股东]-> C -[法人]-> D -[贷款]-> E(逾期)
申请人A -[同设备]-> F(黑名单)
申请人A -[同IP]-> G, H, I (批量申请)
=> 发现隐性风险关联
二、金融风控知识图谱 Schema 设计
2.1 核心实体与关系
实体类型:
Person -- 自然人(姓名、身份证、手机、地址)
Company -- 企业(名称、统一社会信用代码、注册资本)
Account -- 账户(账号、开户行、类型)
Device -- 设备(设备指纹、IP、MAC)
LoanApp -- 贷款申请(金额、期限、状态)
Transaction -- 交易(金额、时间、渠道)
关系类型:
Person -[OWNS]-> Account
Person -[LEGAL_REP]-> Company
Person -[SHAREHOLDER {ratio}]-> Company
Person -[GUARANTEES]-> Person|Company
Person -[USES]-> Device
Person -[APPLIES]-> LoanApp
Account -[TRANSFER {amount, time}]-> Account
Company -[INVESTS {ratio}]-> Company
Company -[SUPPLIES]-> Company
2.2 标签体系
风险标签(附着在 Person/Company 节点上):
BLACKLISTED -- 黑名单
HIGH_RISK -- 高风险
OVERDUE_90D -- 逾期 90 天以上
FRAUD_SUSPECTED -- 疑似欺诈
PEP -- 政治敏感人物
SANCTIONS_HIT -- 命中制裁名单
三、反欺诈图模式
3.1 团伙欺诈检测
核心思路:通过设备、地址、联系人等"弱关联"发现表面独立但实际关联的申请人群体。
// 模式 1:设备聚集(同一设备多人申请)
MATCH (d:Device)<-[:USES]-(p:Person)-[:APPLIES]->(app:LoanApp)
WITH d, collect(DISTINCT p) AS users, count(DISTINCT p) AS cnt
WHERE cnt >= 3
RETURN d.fingerprint, cnt, [u IN users | u.name] AS applicants
// 模式 2:地址聚集(同一地址多人申请,非商业地址)
MATCH (p1:Person)-[:APPLIES]->(:LoanApp)
MATCH (p2:Person)-[:APPLIES]->(:LoanApp)
WHERE p1 <> p2
AND p1.address = p2.address
AND NOT p1.address CONTAINS '大厦'
WITH p1.address AS addr, collect(DISTINCT p1.name) + collect(DISTINCT p2.name) AS names
WHERE size(names) >= 3
RETURN addr, names
// 模式 3:担保环(A 担保 B、B 担保 C、C 担保 A)
MATCH path = (a:Person)-[:GUARANTEES*3..6]->(a)
RETURN path, length(path) AS loop_size
3.2 身份伪造检测
// 同一手机号关联多个身份证
MATCH (p1:Person)-[:USES]->(phone:Phone)<-[:USES]-(p2:Person)
WHERE p1 <> p2 AND p1.id_number <> p2.id_number
RETURN phone.number, collect(p1.name) AS identities
// 短时间内更换多个手机号
MATCH (p:Person)-[u:USES]->(phone:Phone)
WITH p, collect(phone) AS phones, count(phone) AS phoneCnt
WHERE phoneCnt >= 3
RETURN p.name, phoneCnt, [ph IN phones | ph.number] AS numbers
3.3 实时风险评分架构
┌─────────────┐
贷款申请 ──────> │ API Gateway │
└──────┬──────┘
|
┌──────┴──────┐
│ 风控引擎 │
│ │
│ 1. 规则层 │ -- 黑名单命中、基础规则
│ 2. 模型层 │ -- XGBoost/LightGBM 特征打分
│ 3. 图谱层 │ -- 关联风险传导
│ │
└──────┬──────┘
|
┌───────────┼───────────┐
| | |
┌──────┴──┐ ┌────┴────┐ ┌──┴───────┐
│ 规则引擎 │ │ ML 模型 │ │ 图谱查询 │
│ Drools │ │ Serving │ │ Neo4j │
└─────────┘ └─────────┘ └──────────┘
图谱层风险评分逻辑:
def graph_risk_score(person_id: str) -> dict:
"""基于图谱的风险评分"""
query = """
// 1 跳内黑名单关联
MATCH (p:Person {id: $pid})-[*1..2]-(risky)
WHERE risky:BLACKLISTED OR risky:OVERDUE_90D
WITH p,
count(CASE WHEN risky:BLACKLISTED THEN 1 END) AS blacklist_cnt,
count(CASE WHEN risky:OVERDUE_90D THEN 1 END) AS overdue_cnt
// 担保环检测
OPTIONAL MATCH loop = (p)-[:GUARANTEES*2..5]->(p)
WITH p, blacklist_cnt, overdue_cnt,
CASE WHEN loop IS NOT NULL THEN 1 ELSE 0 END AS has_loop
// 设备聚集度
OPTIONAL MATCH (p)-[:USES]->(d:Device)<-[:USES]-(other:Person)
WITH p, blacklist_cnt, overdue_cnt, has_loop,
count(DISTINCT other) AS device_sharing
RETURN {
blacklist_proximity: blacklist_cnt,
overdue_proximity: overdue_cnt,
guarantee_loop: has_loop,
device_sharing: device_sharing,
graph_score: blacklist_cnt * 30 + overdue_cnt * 20
+ has_loop * 40 + device_sharing * 10
} AS risk
"""
with driver.session() as session:
result = session.execute_read(lambda tx: tx.run(query, pid=person_id).single())
return result["risk"]
四、反洗钱(AML)知识图谱
4.1 资金流转网络分析
反洗钱的核心是追踪资金流向,发现"分层-混合-整合"三阶段模式:
阶段 1(分层 Layering):
大额 -> 拆分为多笔小额 -> 多个账户
阶段 2(混合 Integration):
多个账户 -> 交叉转账 -> 混淆来源
阶段 3(整合 Integration):
汇集到目标账户 -> 合法用途(购房、投资)
Cypher 检测模式:
// 可疑资金环路:A -> B -> C -> ... -> A,且金额接近
MATCH path = (a:Account)-[:TRANSFER*3..8]->(a)
WITH path, relationships(path) AS transfers
WHERE ALL(t IN transfers WHERE t.amount > 5000)
AND ALL(t IN transfers WHERE
abs(t.amount - head(transfers).amount) < head(transfers).amount * 0.2)
RETURN path,
reduce(s = 0, t IN transfers | s + t.amount) AS totalFlow,
length(path) AS hops
// 大额拆分(一入多出,金额总和接近)
MATCH (source:Account)-[t_in:TRANSFER]->(hub:Account)-[t_out:TRANSFER]->(targets:Account)
WHERE t_in.amount > 50000
WITH hub, t_in,
collect(t_out) AS outs,
sum(t_out.amount) AS total_out
WHERE abs(total_out - t_in.amount) < t_in.amount * 0.05
AND size(outs) >= 3
RETURN hub.account_no, t_in.amount, total_out, size(outs) AS split_count
4.2 制裁名单与 PEP 筛查
// 客户的 2 跳内是否关联 PEP 或制裁实体
MATCH (c:Person {id: $customer_id})-[*1..2]-(target)
WHERE target:PEP OR target:SANCTIONS_HIT
RETURN target.name, labels(target),
shortestPath((c)-[*]-(target)) AS connection_path
五、信用风险评估
5.1 图特征工程
将图谱拓扑信息转化为可输入 ML 模型的特征:
| 图特征 | 计算方式 | 风控含义 |
|---|---|---|
| 度中心性 | 节点的关系数量 | 社交活跃度 |
| PageRank | 节点的图重要性 | 影响力 |
| 社区归属 | Louvain/Label Propagation | 所属群体风险 |
| 黑名单距离 | 到最近黑名单节点的最短路径 | 风险传导距离 |
| 担保深度 | 担保链最大长度 | 间接风险暴露 |
| 共同邻居数 | 与黑名单共享的邻居数 | 关联紧密度 |
# 使用 Neo4j GDS 计算图特征
def compute_graph_features(tx, person_id):
features = {}
# PageRank
pr = tx.run("""
CALL gds.pageRank.stream('riskGraph')
YIELD nodeId, score
WITH gds.util.asNode(nodeId) AS node, score
WHERE node.id = $pid
RETURN score
""", pid=person_id).single()
features["pagerank"] = pr["score"] if pr else 0
# 黑名单最短距离
dist = tx.run("""
MATCH (p:Person {id: $pid}), (b:Person:BLACKLISTED)
MATCH path = shortestPath((p)-[*..5]-(b))
RETURN min(length(path)) AS min_dist
""", pid=person_id).single()
features["blacklist_distance"] = dist["min_dist"] if dist and dist["min_dist"] else 99
return features
5.2 图神经网络(GNN)风控模型
传统 ML 只能用手工构造的图特征,GNN 可以端到端学习图结构信息:
输入层: 节点特征(年龄、收入、征信分)+ 图结构(邻接矩阵)
|
GNN 层 x 2-3: 消息传递(每个节点聚合邻居信息)
|
读出层: 节点级分类(违约/正常)
|
输出: 每个申请人的违约概率
适用场景:数据量大(百万节点以上)、关系复杂(多类型关系)、需要自动学习图模式。
六、案例研究
案例 1:某银行信用卡反欺诈
- 背景:日均申请 5 万笔,传统规则误杀率 15%
- 方案:构建申请人关联图谱(设备、地址、手机、担保人),图模式检测 + GNN 模型
- 结果:欺诈检出率从 60% 提升至 89%,误杀率从 15% 降至 5%
- 关键图模式:设备聚集(3+ 人共用设备)命中率最高
案例 2:某支付公司反洗钱
- 背景:日均交易 200 万笔,人工审查可疑交易报告效率低
- 方案:构建实时资金流转图谱,环路检测 + 拆分模式 + 制裁名单关联
- 结果:可疑交易识别效率提升 3 倍,人工审查量减少 40%
- 关键图模式:资金环路(3-5 跳闭环)+ 大额拆分(1 入 3+ 出)
七、落地检查清单
- 数据接入:核心数据源(客户、交易、设备)是否实时/准实时可用
- Schema 评审:是否覆盖了目标场景的关键实体和关系
- 查询性能:高频图模式查询是否在 100ms 内返回
- 模型集成:图特征是否已接入 ML 模型的特征工程 Pipeline
- 规则配置:反欺诈/AML 图模式是否可配置(阈值、跳数、金额)
- 合规审查:数据使用是否符合个人信息保护法和金融监管要求
- 监控告警:图谱更新延迟、查询超时、异常模式命中是否有告警
Maurice | maurice_wen@proton.me