特征工程的艺术:从业务理解到自动化

特征工程的艺术:从业务理解到自动化

在机器学习项目中,特征工程往往比模型选择更能决定最终效果。好的特征可以化繁为简,让简单模型也能取得优异表现。本文结合金融风控场景,系统梳理特征工程的方法论。

时序特征是金融场景最重要的特征类型:

示意图
示意图
# 滑动窗口统计特征
for window in [7, 14, 30]:
    df[f"amount_mean_{window}d"] = (
        df.groupby("user_id")["amount"]
        .transform(lambda x: x.rolling(window, min_periods=1).mean())
    )
    df[f"amount_std_{window}d"] = (
        df.groupby("user_id")["amount"]
        .transform(lambda x: x.rolling(window, min_periods=1).std())
    )

# 距离特征:距上次交易的天数
df["days_since_last"] = df.groupby("user_id")["date"].diff().dt.days

交叉特征可以捕捉特征间的交互效应:

from sklearn.preprocessing import PolynomialFeatures

# 二阶交叉
poly = PolynomialFeatures(degree=2, interaction_only=True, include_bias=False)
cross_features = poly.fit_transform(df[["amount", "hour", "is_weekend"]])

自动化特征工程方面,Featuretools 是一个强大的工具,它可以自动从关系型数据中生成深层特征。但要注意特征选择——过多的特征会导致维度灾难和过拟合。我们使用基于树模型的重要性排序和递归特征消除(RFE),将 500+ 特征精简到 80 个关键特征,模型 AUC 反而从 0.82 提升到了 0.87。