4. 滚动窗口核心思想
在反洗钱(AML)交易监控中,单笔交易往往看不出问题,真正有风险信号的是“在一段时间内、围绕某个主体反复出现的行为模式”。滚动窗口的核心思想,就是把连续不断的交易流切成一个个可计算的观察区间,并在这些区间上做聚合,从而把“流水”变成“特征”。理解滑动窗口、滚动聚合、时间窗口与事件窗口的区别,是后续所有特征工程的地基。
一、核心原理:窗口是“观察视角”,聚合是“压缩手段”
滚动窗口可以拆成两个动作:切窗和聚合。切窗决定“看哪一段数据”,聚合决定“把这段数据压缩成什么数值”。在AML场景中,常见的聚合包括计数、求和、均值、最大值、去重计数、方差等。
滑动窗口(Sliding Window)强调窗口按固定步长向前移动,相邻窗口之间有重叠。例如每1小时计算一次“过去24小时”的统计量,窗口长度24小时,滑动步长1小时。滚动聚合(Rolling Aggregation)则强调在窗口内执行聚合函数,并随着窗口移动不断更新结果。二者结合,就形成了“滚动窗口聚合”这一特征生成范式。
关键点:窗口长度决定“记忆范围”,滑动步长决定“特征更新频率”。长度越长,越能捕捉慢速累积风险;步长越短,越能及时反映突发变化。二者需要根据业务节奏和计算成本权衡。
二、时间窗口与事件窗口的区别
时间窗口(Time Window)按物理时间切分,例如“过去7天”“过去30分钟”。它直观、易解释,适合监管报送和业务沟通。事件窗口(Event Window)按事件数量或事件边界切分,例如“最近100笔交易”“从上一次大额交易以来的所有交易”。它更关注行为密度和事件上下文,但解释成本更高。
| 维度 | 时间窗口 | 事件窗口 |
|---|---|---|
| 切分依据 | 物理时间(秒、分、时、天) | 事件数量或事件边界 |
| 典型表达 | 过去24小时、过去7天 | 最近50笔、上次大额后至今 |
| 优点 | 直观、可解释、便于监管对齐 | 自适应密度、捕捉突发聚集 |
| 缺点 | 稀疏时段窗口内样本少 | 窗口边界不稳定、解释复杂 |
| AML适用 | 日累计、周累计、月累计监控 | 高频试探、短时多笔拆分 |
实际工程中,二者常结合使用:先用时间窗口做基础统计,再用事件窗口做补充特征。例如“过去24小时交易笔数”与“最近20笔交易的平均金额”同时作为特征输入模型。
三、方法流程:从交易流到滚动特征
- 确定实体与时间轴:明确按客户、账户还是卡号聚合,并统一时间戳口径(交易时间或入账时间)。
- 定义窗口参数:选择窗口长度、滑动步长、是否按事件数切分。
- 排序与去重:按实体和时间排序,处理重复交易和乱序数据。
- 执行滚动聚合:在窗口内计算计数、金额求和、去重对手方数等。
- 生成特征快照:在每个滑动点输出一行特征,供模型或规则使用。
# 以 pandas 为例:按客户滚动计算过去7天交易金额与笔数
df = df.sort_values(["customer_id", "txn_time"])
df["amt_7d"] = (
df.groupby("customer_id")
.rolling("7D", on="txn_time")["amount"]
.sum()
.reset_index(level=0, drop=True)
)
df["cnt_7d"] = (
df.groupby("customer_id")
.rolling("7D", on="txn_time")["amount"]
.count()
.reset_index(level=0, drop=True)
)
提示:滚动窗口计算时要注意“当前交易是否包含在窗口内”。包含当前交易会引入前视偏差,不包含则更贴近实时决策。AML实时监控通常选择“截至当前交易之前”的窗口,避免用未来信息判断当前行为。
四、AML场景中的意义与常见误区
在AML场景中,滚动窗口的意义体现在三个方面:第一,识别拆分交易,如多笔小额在短时间内集中转入同一账户;第二,捕捉行为突变,如某客户过去30天日均交易3笔,突然某天出现50笔;第三,支撑可解释规则,如“过去7天累计现金存入超过5万元”可直接对应监管阈值。
常见误区包括:
- 窗口长度一刀切:所有客户都用同一窗口,忽略不同客户的风险节奏差异。
- 忽略时间对齐:不同数据源时间戳口径不一致,导致窗口错位。
- 过度依赖事件窗口:事件窗口在低频客户上几乎不触发,造成特征缺失。
- 忘记处理时区与节假日:跨时区交易可能被错误切分到不同窗口。
警告:滚动窗口特征在训练集和推理集上必须保持相同的窗口定义和计算逻辑。若训练时使用“包含当前交易”的窗口,而推理时使用“不包含当前交易”,会导致特征分布偏移,模型效果大幅下降。
总结来说,滑动窗口提供移动观察视角,滚动聚合把窗口内行为压缩为数值,时间窗口与事件窗口分别从时间和事件两个维度定义观察边界。在AML场景中,合理选择窗口类型和参数,才能让特征既敏感又稳定,既符合监管逻辑又适应业务节奏。