1. 项目概述:当Embedding遇见特征工程

在金融风控和用户行为分析领域,我们每天都在处理海量的交易事件序列——每笔支付的时间戳、金额、商户类型,每个页面点击的先后顺序,这些时序数据蕴含着用户最真实的行为密码。传统做法面临一个两难选择:使用统计特征(如最近30天交易次数、平均金额)可解释性强但特征工程成本高;采用深度学习Embedding(如RNN、Transformer生成的用户向量)自动化程度高却成了"黑箱"。

去年在为某银行优化反欺诈系统时,我们发现一个有趣现象:当把手工设计的"凌晨交易占比"特征与用户Embedding拼接后,模型AUC提升了2.3%。这暗示着——Embedding可能没有完全捕获某些关键模式。后来才知道,这种现象在业内被称为"表征盲区"(Representational Blind Spots),就像人眼的视觉盲区一样,不同架构的Embedding模型会系统性忽略某些特征模式。

2. 核心设计思路拆解

2.1 框架整体架构

EAFD的创新在于构建了一个动态对话系统:让Embedding和特征工程互相"教"对方。其核心组件包括:

  1. 预训练Embedding锚点
    冻结的CoLES/NTP/LLM4ES等序列编码器,将原始事件序列(如[txn_time, amount, mcc])映射为d维向量。这里特别要注意,不同编码器有各自的"视觉偏好":

    • CoLES(对比学习)擅长捕捉商户类别共现模式
    • NTP(Next Transaction Prediction)对时间间隔敏感
    • LLM4ES能理解文本描述的语义(如"奢侈品"vs"日用品")
  2. LLM特征生成代理
    采用GPT-OSS-120B作为"特征发明家",其创新点在于输入上下文包含:

    • 原始事件序列的元信息(字段类型、统计量)
    • 当前Embedding重建误差热力图(如图1所示)
    • 历史迭代的反馈(哪些特征类型表现好/差)
  3. 双机制评估系统

    • 对齐得分(A) :用LightGBM预测Embedding向量各维度,R²越高说明特征越能"解释"Embedding
    • 互补得分(U) :对比「纯Embedding」和「Embedding+特征」的下游任务损失差异

2.2 特征生成逻辑剖析

当LLM生成"最近7天最大单笔金额"这样的特征时,实际发生了三层推理:

  1. 模式识别
    分析交易金额字段的分布(右偏?有离群值?),决定采用max而非mean

  2. 时间窗选择
    根据历史反馈知道:短期模式(7天)对欺诈检测有用,长期模式(90天)适合信用评估

  3. 可解释性包装
    自动生成特征描述:"捕获用户近期消费激进程度"

实操技巧:在金融场景中,建议限制LLM生成的特征不超过3层聚合(如sum(max(amount))),过于复杂的特征虽然训练集有效但泛化性差。

3. 关键技术实现细节

3.1 特征候选生成

LLM的prompt设计是成功关键。以下是经过调优的模板:

"""你是一名资深金融风控专家,请基于以下信息设计特征:
1. 可用字段: {字段列表}
2. 当前Embedding在[时间类]特征重建差
3. 上一轮最佳特征是[夜间交易占比]
请生成5个Python函数,每个包含:
- 函数逻辑(含@validate装饰器)
- 业务解释
- 预期影响方向"""

# 示例输出
def feature_last3day_entropy(events):
    '''计算最近3天交易时间的香农熵'''
    times = [e.hour for e in events if e.timestamp > now-3*86400]
    return entropy(np.histogram(times, bins=24)[0])

3.2 双阶段评估实现

对齐评估的代码细节值得关注:

def calc_alignment_score(features, embeddings):
    # 使用弹性网络回归防止过拟合
    model = make_pipeline(
        StandardScaler(),
        ElasticNetCV(l1_ratio=[.1, .5, .9])
    )
    scores = []
    for dim in range(embeddings.shape[1]):
        model.fit(features, embeddings[:, dim])
        scores.append(r2_score(embeddings[:, dim], 
                              model.predict(features)))
    return np.mean(scores)

而互补评估更关注业务指标:

def calc_utility_score(X_embed, X_feat, y, metric='auc'):
    base_model = CatBoostClassifier(iterations=500).fit(X_embed, y)
    joint_model = CatBoostClassifier(iterations=500).fit(
        np.hstack([X_embed, X_feat]), y)
    
    base_score = evaluate(base_model, X_embed, y, metric)
    joint_score = evaluate(joint_model, 
                         np.hstack([X_embed, X_feat]), y, metric)
    return joint_score - base_score

3.3 迭代优化策略

每轮迭代后,会给LLM反馈这样的结构化信息:

特征类型 对齐分↑ 互补分↑ 执行耗时↓ 稳定性★
时间熵 0.82 0.01 120ms ★★★★
金额偏度 0.45 0.03 85ms ★★★
跨商户HHI 0.31 0.12 210ms ★★

这引导LLM在下一轮:①多生成时间类特征 ②避免复杂聚合 ③添加异常值处理

4. 工业落地实践

4.1 性能优化技巧

在银行实际部署时,我们发现三个关键点:

  1. 特征缓存机制
    对高频特征(如"当日交易次数")预计算并存入Redis,避免实时计算影响风控接口延迟

  2. LLM生成限速
    通过以下策略控制成本:

    • 温度系数=0.3降低随机性
    • 一轮最多生成20个候选
    • 跳过与已有特征Jaccard相似度>0.6的提案
  3. 动态特征开关
    监控每个特征的PSI(群体稳定性指数),当PSI>0.25时自动降权

4.2 可解释性增强

为满足监管要求,我们对重要特征添加了双重解释:

  1. 技术层面
    使用SHAP分析特征对Embedding维度的贡献:

    explainer = shap.LinearExplainer(alignment_model)
    shap_values = explainer.shap_values(feature_samples)
    
  2. 业务层面
    自动生成如下的自然语言报告:

    "特征'周末金额占比'主要影响Embedding第17维(与消费周期性强相关),在客群分层中可区分'稳定薪族'(>0.4)和'自由职业者'(<0.2)"

5. 效果对比与案例分析

5.1 基准测试结果

在Rosbank数据集上的对比实验(AUC):

方法 CoLES NTP LLM4ES
纯Embedding 0.835 0.798 0.849
+Featuretools 0.863 0.812 0.861
+EAFD(本文) 0.872 0.865 0.866

可以看到,EAFD对较弱的基础Embedding(如NTP)提升尤为显著,说明其确实能发现模型盲区。

5.2 典型特征分析

我们解析了EAFD生成的Top特征:

  1. 时间类
    "最近3次交易间隔的变异系数" :捕捉消费节奏异常

    • 对齐分0.64,互补分0.08
    • 在欺诈检测中重要性排名第3
  2. 金额类
    "对数金额与品类平均价的偏离度" :识别异常消费

    • 对齐分0.21,互补分0.15
    • 有效识别出"小额测试交易"欺诈模式
  3. 交叉类
    "周末夜间餐饮消费占比" :生活方式指纹

    • 对齐分0.88,互补分0.02
    • 可用于客群细分

6. 避坑指南

在实际项目中我们踩过这些坑:

  1. 冷启动问题

    • 错误做法:直接让LLM从零开始生成
    • 正确方案:先人工提供10-20个种子特征(如"交易频次")
  2. 数值稳定性

    • 问题:特征"金额/交易次数"在零除时崩溃
    • 解决:所有除法特征自动添加epsilon=1e-6
  3. 特征洪水

    • 现象:迭代5轮后特征数膨胀到200+
    • 优化:每轮保留Top20特征,其余进入"休眠池"
  4. 线上线下不一致

    • 陷阱:训练时用全量数据计算分位数,线上只能用滑动窗口
    • 方案:所有统计特征统一改用近90天窗口计算

7. 扩展应用方向

除了金融领域,这套方法还可用于:

  1. 医疗事件序列

    • 对齐特征:用药频率规律性
    • 互补特征:异常检测指标
  2. 物联网日志

    • 设备Embedding + 故障模式特征
  3. 安全领域

    • 网络流量Embedding与威胁指标特征结合

最近我们正在试验将EAFD与差分隐私结合,通过分析特征重要性自动识别Embedding中的敏感信息(如性别、年龄),然后用HSIC正则化进行选择性擦除。初步实验显示,在保持95%的AUC同时,可以减少60%的人口统计信息泄漏。

这种Embedding与特征工程的"双人舞",或许正是实现AI系统可解释性与高性能共存的关键路径。当黑箱模型开始学会解释自己,当手工规则获得自适应进化能力,我们才真正站在了机器智能与人类理解的交汇点上。

Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐