3、特征工程基础:基础统计特征、时间序列特征、业务衍生特征

大家好,我是你们的老朋友。今天咱们聊聊特征工程里最基础、也最实用的一块——怎么从原始交易数据里,挖出那些能“说话”的特征。

说实话,我见过不少新人一上来就堆模型,结果效果差得离谱。为什么?因为特征没做好。你想想看,模型再牛,喂进去的是垃圾,出来的只能是更精致的垃圾。所以,特征工程这事儿,值得咱们花功夫。

3.1 基础统计特征:均值、方差、分位数

基础统计特征,说白了就是描述数据“长什么样”的指标。它们简单,但非常有效。

3.1.1 均值(Mean)

均值就是平均值。在异常交易里,均值能帮我们快速定位“异常高”或“异常低”的行为。

举个例子,一个用户过去30天平均每天交易5笔。如果某天突然交易了50笔,那均值就告诉你——这不对劲。

核心思路: 用历史均值作为基准线,当前值偏离越远,异常概率越大。

3.1.2 方差(Variance)与标准差(Std)

方差衡量数据的波动程度。标准差是方差的平方根,更直观。

我在项目中遇到过这样一个坑:有个用户的交易笔数均值正常,但方差特别大。什么意思?他平时可能一天0笔,突然一天100笔,然后又0笔。这种“脉冲式”行为,往往是盗刷的典型特征。

注意: 方差对异常值非常敏感。如果数据里有极端值,建议先做截尾处理,否则方差会被带偏。

3.1.3 分位数(Quantile)

分位数比均值更稳健。比如中位数(50%分位数),它不受极端值影响。

我个人习惯用四分位数(Q1、Q2、Q3)来构建特征。比如:

  • 交易金额的90%分位数:如果某笔交易金额超过了这个值,那它属于“大额交易”的概率很高。
  • 交易时间的25%分位数:如果用户在凌晨3点交易,而历史数据显示他95%的交易都在白天,那这个时间点就值得怀疑。

嗯,这里要注意:分位数特征在构建时,一定要用滑动窗口来计算,不能直接用全量数据。否则会有未来信息泄露的问题。

3.2 时间序列特征:差分、滑动平均

交易数据天然是时间序列。时间序列特征能捕捉到“趋势”和“周期性”。

3.2.1 差分(Differencing)

差分就是当前值减去上一个值。它能消除趋势,让数据变得平稳。

举个例子,用户A的交易金额一直在增长,从100到200到300。差分后就是100、100、100。这样模型就能更关注“变化量”,而不是绝对值。

# 一阶差分示例
import pandas as pd

df['amount_diff'] = df['amount'].diff(1)

我曾经在反欺诈项目里用过二阶差分。当时有个团伙作案,他们故意让交易金额缓慢增长,一阶差分看不出来。但二阶差分一算,增长加速度异常,直接暴露了。

小技巧: 差分阶数不是越多越好。一般一阶或二阶就够了,再高容易引入噪声。

3.2.2 滑动平均(Moving Average)

滑动平均能平滑短期波动,突出长期趋势。常用的有简单滑动平均(SMA)和指数加权滑动平均(EWMA)。

我个人更推荐EWMA。为什么?因为它给近期的数据更高的权重,对变化更敏感。在异常检测里,我们往往更关心“最近发生了什么”。

# 指数加权滑动平均示例
df['amount_ewma'] = df['amount'].ewm(span=7, adjust=False).mean()

你想想看,如果一个用户过去7天的滑动平均交易金额是500,今天突然变成5000,那这个偏离度就是一个非常强的特征。

3.3 业务衍生特征

这部分最考验对业务的理解。说白了,就是要把业务知识“翻译”成模型能懂的数值。

3.3.1 时间窗口特征

比如“过去1小时内交易次数”、“过去24小时内交易总金额”。这些特征能捕捉到“短时间内高频交易”这种异常行为。

我记得有一次,一个用户过去30天每天交易不超过3笔。但某天他在10分钟内交易了15笔。这个“过去10分钟交易次数”特征,直接让模型给出了99%的异常概率。

3.3.2 比率特征

比率特征能消除量纲影响。比如:

  • 交易金额 / 账户余额:如果这个比率接近1,说明用户几乎把全部余额都转走了,这很可疑。
  • 交易次数 / 登录次数:如果用户登录一次就交易很多笔,可能是机器在操作。
核心原则: 业务衍生特征要回答一个问题——“这个行为在业务上合不合理?”

3.3.3 设备与行为特征

比如“是否使用新设备”、“IP地址是否在常用城市”。这些特征虽然简单,但往往能直接命中异常。

我曾经遇到过一个案例:用户A的账号在1分钟内,从北京和纽约同时发起交易。这个“IP距离”特征,直接锁定了盗刷行为。

3.4 知识体系总览

下面这张图,是我自己总结的特征工程核心框架。你可以把它当作一个检查清单,做特征时对照着看,不容易漏。

特征工程核心框架 基础统计特征 时间序列特征 业务衍生特征 均值 (Mean) 方差/标准差 (Var/Std) 分位数 (Quantile) 中位数 (Median) 众数 (Mode) 偏度/峰度 (Skew/Kurt) 差分 (Differencing) 滑动平均 (MA) 指数加权平均 (EWMA) 自相关 (ACF/PACF) 趋势/季节性分解 滞后特征 (Lag) 时间窗口统计 比率特征 设备/IP特征 行为序列特征 地理距离特征 业务规则特征 三者结合,构建强健的异常检测特征体系

3.5 实战建议

最后,给你几个我在实战中总结的经验:

  1. 先做基础统计特征,它们计算快、解释性强,能快速验证你的数据质量。
  2. 时间序列特征要配合窗口大小。窗口太小,噪声大;窗口太大,反应慢。我一般从7天、30天开始试。
  3. 业务衍生特征要跟业务方对齐。别自己闷头造特征,多问问运营同学“你们平时怎么判断异常?”他们的经验往往能直接转化成特征。
我的习惯: 每次做特征工程,我都会先列一个“特征候选清单”,然后跟业务方过一遍。这样能避免做很多无用功。

好了,这一章的内容就到这里。特征工程是门手艺活,多练、多总结,你也能成为高手。

专注资料整理