一、时序图谱入门:什么是时序知识图谱、为什么风控需要时序、时序图谱 vs 静态图谱
1.1 从一个真实的风控场景说起
先讲个我亲身经历的事。
几年前,我参与过一个电商平台的反欺诈项目。当时我们用的是一套静态知识图谱——就是那种把用户、设备、IP、收货地址连成一张大网,然后跑社区发现算法找团伙。效果嘛,一开始还行。
但后来我们发现一个问题:有些账户,今天看起来完全正常,明天突然就变成了欺诈节点。静态图谱根本抓不住这种变化。你想想看,一个用户昨天还在正常买东西,今天就帮黑产洗钱,中间发生了什么?静态图谱不会告诉你。
这就是为什么我开始关注时序知识图谱。
1.2 什么是时序知识图谱
说白了,时序知识图谱就是在传统知识图谱的基础上,给每条关系加上时间戳。
举个例子:
- 静态图谱:用户A → 设备B(关系:使用)
- 时序图谱:用户A → 设备B(关系:使用,时间:2024-01-01 10:00:00)
看起来只是加了个时间,但意义完全不同。
静态图谱告诉你「谁和谁有关系」,时序图谱告诉你「谁在什么时候和谁有关系」。后者能回答的问题,比前者多了一个维度。
核心定义:时序知识图谱 = 知识图谱 + 时间维度。每条事实(三元组)都带有一个时间标签,表示该事实在某个时间区间内有效。
1.3 为什么风控需要时序
我直接说结论:风控的本质,是发现异常的变化。
静态图谱只能告诉你「当前状态」,但欺诈行为往往藏在「状态变化」里。举个例子:
- 一个用户突然换了设备,这本身不异常
- 但如果他在5分钟内换了3台设备,而且每台设备都关联过黑名单账户——这就是典型的设备农场行为
静态图谱能发现「换设备」这个事实,但抓不住「短时间内频繁换设备」这个模式。时序图谱可以。
我在项目中遇到过这样一个案例:某个账户每天登录时间很规律,都是晚上8点到10点。突然有一天,它在凌晨3点登录,而且登录IP从国内跳到了国外。静态图谱里,这个账户的关联关系没变,但时序图谱一眼就能看出异常——时间模式变了。
我的经验:在风控场景中,80%的有效特征都跟时间有关。比如:行为频率、时间间隔、时序模式、变化速率。这些特征,静态图谱一个都提取不出来。
1.4 时序图谱 vs 静态图谱:一张表说清楚
| 对比维度 | 静态图谱 | 时序图谱 |
|---|---|---|
| 数据模型 | 三元组 (实体, 关系, 实体) | 四元组 (实体, 关系, 实体, 时间) |
| 查询能力 | 当前关系查询 | 历史关系查询、趋势分析、模式匹配 |
| 异常检测 | 基于静态结构 | 基于时序变化 + 结构变化 |
| 存储开销 | 较低 | 较高(需要存储时间索引) |
| 适用场景 | 静态关系分析、社区发现 | 行为序列分析、动态团伙识别、实时风控 |
| 实时性 | 支持实时查询 | 支持实时写入 + 实时查询 |
嗯,这里要注意:时序图谱不是静态图谱的替代品,而是升级版。静态图谱能做的,时序图谱都能做;但反过来不行。
1.5 时序图谱的核心知识体系
下面这张图是我自己整理的,基本覆盖了时序图谱在风控中要用到的核心概念:
1.6 一个简单的代码示例
为了让你更直观地理解时序图谱的数据结构,我写个简单的Python示例:
# 静态图谱的三元组
static_triple = ("user_001", "use_device", "device_abc")
# 时序图谱的四元组
time_aware_triple = {
"subject": "user_001",
"predicate": "use_device",
"object": "device_abc",
"timestamp": "2024-01-15T10:30:00Z",
"valid_from": "2024-01-15T10:30:00Z",
"valid_to": "2024-01-15T11:45:00Z"
}
# 查询示例:找出某个用户在特定时间段内使用过的所有设备
def query_user_devices_in_time_range(user_id, start_time, end_time):
# 伪代码,实际实现取决于存储引擎
return graph.query("""
MATCH (u:User)-[r:USE_DEVICE]->(d:Device)
WHERE u.id = $user_id
AND r.valid_from >= $start_time
AND r.valid_to <= $end_time
RETURN d, r.timestamp
""", params={"user_id": user_id, "start_time": start_time, "end_time": end_time})
我曾经踩过的坑:刚开始做时序图谱时,我直接把所有历史数据都存进去了,结果存储膨胀了10倍。后来才意识到,不是所有关系都需要保留完整时间线。比如「用户登录」这种高频事件,可以用滑动窗口+聚合的方式存储,没必要每条都记。
1.7 什么时候该用时序图谱
我个人的判断标准很简单:
- 如果你的风控规则里包含「频率」「间隔」「变化」「趋势」这些词——那就需要时序图谱
- 如果你只关心「谁和谁有关系」——静态图谱就够了
举个例子:
- 「同一设备登录超过5个账户」→ 静态图谱能搞定
- 「同一设备在10分钟内登录超过5个账户」→ 必须上时序图谱
你看,就差了一个时间条件,技术方案完全不同。
1.8 小结
这一章我们聊了:
- 时序知识图谱就是在静态图谱上加了个时间维度
- 风控需要时序,因为欺诈行为往往藏在变化里
- 时序图谱能做的,静态图谱不一定能做
- 选型时,看你的规则里有没有「时间」相关的条件
下一章,我会带你看看时序图谱在风控中的具体数据模型设计——包括怎么存、怎么查、怎么保证实时性。这些都是在实际项目中踩过坑才总结出来的经验。
公众号:蓝海资料掘金营,微信deep3321