3. 原子特征层详解
原子特征层是风控规则引擎中最基础、最不可拆分的特征单元。它直接来源于原始数据采集,不经过任何聚合、衍生或模型计算,是构建所有高阶特征(统计特征、模型特征、组合特征)的“原材料”。理解原子特征的定义、类型、数据源与采集方式,是设计高效、可维护特征体系的前提。
3.1 什么是原子特征
原子特征(Atomic Feature)是指从单一数据源、单一事件或单一实体中直接提取的、不可再分的基础属性。它满足以下三个条件:
- 不可拆分性:无法再分解为更小的、有业务含义的特征单元。
- 单源性:仅依赖一个数据源或一次API调用,不涉及跨表关联或时间窗口聚合。
- 即时性:通常反映当前时刻或最近一次事件的快照值,不包含历史统计。
典型对比:
- 原子特征:
device_id、ip_country、phone_operator、user_register_time - 非原子特征:
近7天同一IP登录次数(需聚合)、设备指纹风险评分(需模型计算)
3.2 常见原子特征类型
根据风控场景中常见的实体维度,原子特征可划分为四大核心类型。下表列出了每种类型的典型特征、业务含义及常见用途:
| 特征类型 | 典型原子特征 | 业务含义 | 常见用途 |
|---|---|---|---|
| 设备特征 | device_id、os_type、os_version、brand、model、screen_resolution、is_rooted、is_emulator |
标识用户使用的终端设备及其软硬件属性 | 设备指纹识别、模拟器检测、设备关联分析 |
| IP特征 | ip_address、ip_country、ip_city、isp、ip_type(数据中心/住宅/代理)、asn |
标识网络请求来源的地理位置与网络属性 | 地理位置校验、代理/VPN检测、IP黑名单 |
| 手机号特征 | phone_number、phone_prefix、phone_operator、phone_region、is_virtual、is_ported |
标识用户绑定的手机号码及其运营商、归属地信息 | 号码归属地校验、虚拟号检测、二次放号识别 |
| 账户基础信息 | user_id、register_time、register_channel、account_status、real_name_status、bind_email |
标识用户账户的核心注册属性与状态 | 账户年龄判断、渠道质量评估、实名等级校验 |
实战建议:在规则引擎中,原子特征通常以“字段名 = 值”的形式直接参与规则判断。例如:
is_emulator = true 直接命中模拟器规则;ip_type = 'datacenter' 触发代理风险规则。保持原子特征的原始性和准确性,比追求复杂计算更重要。
3.3 原子特征的数据源与采集方式
原子特征的数据源决定了特征的覆盖度、时效性和准确性。不同特征类型对应不同的采集渠道和技术方案。下表汇总了四大原子特征类型的常见数据源与采集方式:
| 特征类型 | 主要数据源 | 采集方式 | 关键考量 |
|---|---|---|---|
| 设备特征 | 客户端SDK、H5指纹库、设备指纹服务商 | SDK主动采集(Android/iOS/Web);服务端API查询 | 权限合规、设备标识持久性、模拟器对抗 |
| IP特征 | IP地理库(GeoIP)、ISP数据、威胁情报 | 服务端解析HTTP请求头 X-Forwarded-For / Remote-Addr;调用第三方IP库API |
代理穿透、CDN回源IP处理、库更新频率 |
| 手机号特征 | 运营商网关、号码归属地库、虚拟号段库 | 用户输入时前端校验;服务端调用运营商接口或本地库查询 | 隐私合规(脱敏)、号段变更、携号转网 |
| 账户基础信息 | 业务数据库(MySQL/Redis)、用户中心API | 服务端直连数据库或调用内部微服务接口 | 数据一致性、缓存策略、字段变更兼容 |
3.4 原子特征采集的工程要点
在实际工程落地中,原子特征的采集需要关注以下三个关键问题:
- 数据合规与隐私:设备特征采集需遵循GDPR、个人信息保护法等法规,明确告知用户并获取授权;手机号等敏感信息必须脱敏后使用。
- 数据质量与时效:IP库、号段库需要定期更新(建议每月至少一次);设备指纹需处理重装、刷机等导致标识变化的情况。
- 采集性能与稳定性:第三方API调用需设置超时和降级策略;高频场景下建议使用本地缓存或预加载,避免因外部服务抖动导致特征缺失。
常见陷阱:不要将原子特征与统计特征混为一谈。例如“用户注册天数”虽然看起来简单,但它需要
register_time(原子特征)与当前时间做差值计算,属于衍生特征。在特征分层中,应严格区分原始属性与计算属性,避免规则引擎中出现重复计算逻辑。
3.5 原子特征在规则引擎中的使用示例
以下是一个简单的规则引擎配置片段,展示了原子特征如何直接参与规则判断:
// 规则:检测模拟器环境
rule "Detect Emulator" {
when
device.is_emulator == true
then
risk_score += 80
add_tag("emulator_device")
}
// 规则:检测高风险IP类型
rule "Datacenter IP" {
when
ip.type == "datacenter"
&& ip.country != "CN"
then
risk_score += 60
add_tag("proxy_ip")
}
// 规则:检测虚拟手机号
rule "Virtual Phone" {
when
phone.is_virtual == true
&& account.register_time > "2024-01-01"
then
risk_score += 40
add_tag("virtual_phone_new_user")
}
上述规则中,device.is_emulator、ip.type、phone.is_virtual、account.register_time 均为原子特征。它们直接从采集层获取,无需任何聚合计算,保证了规则执行的高效性和可解释性。