3. 实体与关系建模:欺诈场景中的核心要素

在反欺诈图谱中,实体与关系的建模是构建知识图谱的基石。一个精准的模型能够将离散的日志数据转化为可推理的关联网络。本章将围绕欺诈场景中的三大核心实体(用户、设备、IP、手机号)以及三大典型关系(登录、转账、注册)进行详细定义与属性设计。

3.1 核心实体定义

实体是图谱中的节点,代表具有独立身份或属性的对象。在反欺诈场景中,我们通常将以下四类对象作为核心实体:

实体类型 实体标识(ID) 核心描述 典型欺诈风险
用户(User) user_id 账户体系中的自然人,通常包含注册信息与行为画像 盗号、虚假注册、团伙欺诈
设备(Device) device_id / device_fp 用户操作所使用的物理设备或浏览器指纹 设备农场、模拟器、多开
IP地址(IP) ip_address 网络层的出口地址,代表网络位置 代理IP、爬虫、同IP多账户
手机号(Phone) phone_number 用户绑定的移动通信标识,常用于验证与联系 接码平台、虚拟号段、二次放号
建模要点: 实体ID必须保证全局唯一且不可变。对于设备实体,建议同时使用设备硬件ID与浏览器指纹(Canvas/WebGL)作为复合标识,以应对设备重置或指纹修改。

3.2 实体属性设计

每个实体除了唯一标识外,还需要携带丰富的属性字段,用于后续的规则计算与图特征提取。以下是各实体的关键属性设计:

3.2.1 用户实体属性

  • 基础属性: 注册时间(register_time)、注册渠道(register_channel)、账户等级(account_level)
  • 画像属性: 年龄区间(age_range)、性别(gender)、历史订单数(order_count)
  • 风险属性: 历史被举报次数(report_count)、是否黑名单(is_blacklisted)、风险评分(risk_score)

3.2.2 设备实体属性

  • 硬件属性: 设备型号(device_model)、操作系统版本(os_version)、是否越狱/root(is_jailbroken)
  • 环境属性: 屏幕分辨率(screen_resolution)、时区(timezone)、语言(language)
  • 指纹属性: Canvas指纹(canvas_fp)、WebGL指纹(webgl_fp)、音频指纹(audio_fp)

3.2.3 IP实体属性

  • 地理位置: 国家(country)、城市(city)、ISP(isp)
  • 风险标签: 是否代理(is_proxy)、是否数据中心(is_datacenter)、是否Tor出口(is_tor)
  • 行为统计: 过去24小时关联用户数(user_count_24h)、过去24小时请求频次(request_freq_24h)

3.2.4 手机号实体属性

  • 号段属性: 运营商(carrier)、号段归属地(location)、是否为虚拟运营商(is_virtual)
  • 状态属性: 是否二次放号(is_recycled)、是否接码平台(is_sms_platform)、注册时间(register_time)
属性设计原则: 属性应尽量选择枚举值或数值型,避免长文本。例如“是否代理”使用布尔值,“风险评分”使用0-100的整数。这有利于图数据库的索引与聚合查询。

3.3 关系类型定义

关系是图谱中的边,描述实体之间的行为或逻辑连接。在反欺诈场景中,我们重点建模以下三种核心关系:

关系类型 源实体 目标实体 语义含义
登录(LOGIN) 用户 设备 / IP 用户在某设备或IP上执行登录操作
转账(TRANSFER) 用户 用户 用户A向用户B发起资金转移
注册(REGISTER) 用户 手机号 / 设备 用户使用某手机号或设备完成注册

3.4 关系属性设计

关系同样需要携带属性,用于描述行为发生的上下文。这些属性是回放验证时计算时间窗口、频次、序列的关键数据。

3.4.1 登录关系属性

  • 时间戳: login_time(精确到毫秒)
  • 登录结果: login_result(成功/失败/异常)
  • 登录方式: login_method(密码/短信/生物识别/第三方)
  • 会话ID: session_id(用于关联后续行为)

3.4.2 转账关系属性

  • 时间戳: transfer_time
  • 金额: amount(单位:分,避免浮点误差)
  • 转账类型: transfer_type(即时/批量/定时)
  • 设备指纹: device_fp(发起转账的设备)

3.4.3 注册关系属性

  • 时间戳: register_time
  • 注册渠道: channel(App/Web/H5/小程序)
  • 邀请码: invite_code(用于识别团伙邀请链)
  • IP地址: register_ip(注册时的网络环境)
常见建模误区: 不要将“注册”关系直接连接到IP实体。正确的做法是:用户注册时关联手机号与设备,而手机号与设备再分别关联IP。这样可以避免图谱中出现过度密集的IP节点,提升查询性能。

3.5 实体-关系全景图

以下SVG图展示了反欺诈图谱中实体与关系的完整拓扑结构,包含四个核心实体与三种主要关系,以及实体自身的属性示例。

反欺诈图谱实体-关系全景图 用户 (User) user_id, risk_score, register_time 设备 (Device) device_id, os_version, is_jailbroken IP地址 (IP) ip_address, is_proxy, country 手机号 (Phone) phone_number, carrier, is_recycled 用户 (User) user_id, account_level, order_count 登录 登录 注册 转账 说明:图中展示了四种实体与三种关系。用户节点出现两次,表示转账关系发生在两个不同用户之间。

3.6 建模最佳实践与避坑指南

在实际建模过程中,以下经验可以帮助你避免常见的陷阱:

  1. 避免过度归一化: 不要将“登录时间”单独建模为一个实体。时间属性应作为关系属性存在,否则会导致图谱节点爆炸。
  2. 关系方向性: 所有关系都应具有明确的方向。例如“注册”关系从用户指向手机号,而不是双向。这有利于后续的图遍历算法。
  3. 属性冗余策略: 对于高频查询的属性(如“是否代理IP”),可以冗余存储在关系上,避免每次查询都去读取IP节点属性。
  4. 时间衰减: 在关系属性中加入时间戳后,建议在ETL阶段对超过90天的关系进行归档或删除,保持图谱的实时性与查询性能。
实战案例: 某电商平台在建模初期将“收货地址”也作为独立实体,导致图谱中地址节点数量超过用户节点10倍,查询延迟从50ms飙升到2s。优化方案是将地址作为用户实体的属性字段,仅在需要地址关联分析时动态展开。这一调整使查询性能恢复至80ms以内。

3.7 关系属性与回放验证的关联

在后续章节中,我们将使用本章定义的实体与关系进行回放验证。关系属性中的时间戳是回放的核心驱动力。以下是一个典型的关系属性结构示例,用于回放验证的数据输入:

{
  "relation_type": "LOGIN",
  "source_id": "user_1001",
  "target_id": "device_fp_abc123",
  "properties": {
    "login_time": 1712563200000,
    "login_result": "success",
    "login_method": "password",
    "session_id": "sess_xyz_789"
  }
}

在回放验证时,系统会按照 login_time 的升序依次处理每一条关系,重建当时的图谱状态,并触发预设的欺诈规则。因此,关系属性的完整性与准确性直接决定了回放验证的可信度。

关键提醒: 在属性设计中,时间戳必须使用Unix毫秒时间戳(整数类型),避免使用字符串格式的日期时间。字符串比较在分布式图数据库中性能较差,且容易因时区问题导致回放顺序错乱。