4. 禁止特征清单:识别并剔除违规特征
在催收触达合规建模中,特征选择的第一道防线是建立禁止特征清单。监管机构(如银保监会、工信部、网信办)及《个人信息保护法》明确禁止使用涉及个人隐私、社交关系、第三方黑产等敏感数据。本章将系统梳理三类核心违规特征,并提供识别与剔除的实战方法。
合规红线:任何包含通讯录关系、社交行为轨迹、非授权第三方黑产数据的特征,无论模型效果多好,都必须从训练集中彻底删除。违规使用将面临最高5000万元或上一年度营业额5%的罚款,并可能承担刑事责任。
4.1 禁止特征三大类别
根据监管指引与行业实践,禁止特征可归纳为以下三类,每类均包含具体特征示例与识别规则:
| 类别 | 典型特征示例 | 识别规则 | 剔除优先级 |
|---|---|---|---|
| 通讯录关系 | 联系人数量、高频联系人标签、亲属关系推断、通话时长分布 | 特征名含“contact”“address_book”“relation”“call_log” | 最高 |
| 社交行为 | 朋友圈互动频率、群聊活跃度、位置签到、好友亲密度评分 | 特征名含“social”“friend”“moment”“checkin”“group” | 高 |
| 第三方黑产数据 | 非授权爬虫数据、暗网交易记录、未脱敏设备指纹、非法共享黑名单 | 数据来源非持牌征信机构、无用户授权协议 | 最高 |
实战建议:在特征工程阶段,建议建立“特征来源白名单”机制——只有经过合规审核、有明确授权协议的数据源才能进入候选特征池。禁止特征清单应作为自动化特征筛选管线的第一道过滤器。
4.2 识别违规特征的自动化方法
人工审查在大规模特征工程中效率低下,推荐采用以下自动化识别流程:
- 关键词匹配:构建敏感词库(如“contact”“relation”“social”“friend”“blacklist”),对特征名称、描述、来源字段进行正则匹配。
- 数据溯源审计:检查每个特征的原始数据表、采集接口、授权协议ID,标记无授权或授权过期的特征。
- 分布异常检测:对数值型特征进行分布检验,若特征值分布与合法数据源明显偏离(如出现大量整数ID、时间戳模式),则可能来自非法爬取。
- 关联规则挖掘:使用Apriori或FP-Growth算法,发现特征之间的强关联规则,若某特征与已知禁止特征高度相关(置信度>0.9),则标记为疑似违规。
代码示例:基于关键词的禁止特征过滤器
import re
# 敏感词库(可扩展)
SENSITIVE_PATTERNS = [
r'contact', r'address_book', r'relation', r'call_log',
r'social', r'friend', r'moment', r'checkin', r'group',
r'blacklist', r'crawl', r'device_fingerprint', r'third_party'
]
def filter_forbidden_features(feature_list):
forbidden = []
allowed = []
for feat in feature_list:
# 检查特征名
if any(re.search(p, feat['name'], re.IGNORECASE) for p in SENSITIVE_PATTERNS):
forbidden.append(feat)
continue
# 检查特征描述
if any(re.search(p, feat.get('description', ''), re.IGNORECASE) for p in SENSITIVE_PATTERNS):
forbidden.append(feat)
continue
# 检查数据来源
source = feat.get('source', '')
if source not in ['authorized_credit_bureau', 'user_consent_db', 'internal_risk_log']:
forbidden.append(feat)
continue
allowed.append(feat)
return allowed, forbidden
# 使用示例
features = [
{'name': 'contact_count', 'description': '通讯录联系人数量', 'source': 'app_permission'},
{'name': 'income_level', 'description': '用户收入等级', 'source': 'authorized_credit_bureau'},
{'name': 'social_activity_score', 'description': '社交活跃度评分', 'source': 'third_party_crawler'}
]
allowed, forbidden = filter_forbidden_features(features)
print(f"允许特征: {[f['name'] for f in allowed]}")
print(f"禁止特征: {[f['name'] for f in forbidden]}")
4.3 禁止特征剔除流程与SVG架构
下图展示了从原始特征池到合规特征集的完整剔除流程,包含三个核心阶段:特征扫描、合规判定、隔离与审计。
4.4 常见违规特征案例与避坑指南
以下列举实际项目中常见的违规特征案例,帮助识别隐蔽性较强的禁止特征:
| 案例编号 | 特征名称 | 看似合法 | 实际违规原因 | 处理方式 |
|---|---|---|---|---|
| 1 | top10_contact_freq | 仅统计通话频率 | 特征构建依赖通讯录关系,属于间接推断 | 立即剔除 |
| 2 | social_network_density | 使用匿名化社交图谱 | 社交行为数据未经用户单独授权 | 剔除并检查数据来源 |
| 3 | device_fingerprint_score | 用于反欺诈 | 数据来自非持牌第三方,无授权协议 | 剔除并替换为合规设备指纹 |
| 4 | friend_credit_avg | 聚合统计不涉及个体 | 涉及好友关系链,违反《个人信息保护法》 | 立即剔除 |
避坑提示:不要试图通过“特征变换”绕过禁止清单。例如,将通讯录联系人数量除以100取对数,或使用PCA降维后保留主成分,这些操作仍属于违规特征衍生。监管审查的是数据来源与授权,而非特征形态。
4.5 合规特征集构建与SVG对比
下图对比了原始特征池与合规特征集的构成差异,直观展示剔除禁止特征后的特征空间变化:
关键指标:合规特征集构建完成后,建议进行以下验证:
- 特征数量对比:剔除比例应≥30%(视原始数据质量而定)
- 合规审计通过率:100%特征均有明确授权来源
- 模型性能衰减:剔除禁止特征后,模型AUC下降应控制在0.05以内,否则说明模型过度依赖违规特征