
1) 【一句话结论】金融数据特征工程是连接原始交易数据与模型输入的关键环节,核心是通过特征提取、选择、变换等步骤,将高维、非结构化数据转化为模型可用的、具有预测能力的特征,需处理异常值和时序依赖以提升模型鲁棒性。
2) 【原理/概念讲解】金融数据特征工程是数据预处理的核心环节,旨在将原始交易数据(如open、high、low、close、volume)转化为模型可用的特征。关键步骤包括:
3) 【对比与适用场景】| 步骤 | 定义 | 特性 | 使用场景 | 注意点 | |------------|--------------------------|--------------------------|------------------------------|----------------------------| | 特征提取 | 从原始数据中生成新特征 | 生成新特征,可能增加维度 | 基础步骤,所有数据预处理前 | 需业务理解,避免过度工程 | | 特征选择 | 筛选重要特征,减少冗余 | 降维,保留关键信息 | 处理高维数据,提升模型效率 | 需结合业务逻辑,避免遗漏关键特征 | | 特征变换 | 对特征进行转换(如标准化)| 改变特征分布,统一量纲 | 需要模型对特征分布敏感时(如线性模型) | 标准化后特征无实际业务含义,需谨慎解释 |
4) 【示例】(伪代码):假设原始交易数据为df,包含列:open, high, low, close, volume。
# 成交量
df['volume'] = df['volume']
# 价格波动率(过去20天收盘价标准差)
df['volatility'] = df['close'].rolling(window=20).std()
# 技术指标:MACD(快线、慢线)
df['macd_fast'] = df['close'].ewm(span=12).mean() - df['close'].ewm(span=26).mean()
df['macd_slow'] = df['close'].ewm(span=26).mean()
q1 = df['volume'].quantile(0.25)
q3 = df['volume'].quantile(0.75)
iqr = q3 - q1
lower_bound = q1 - 1.5 * iqr
upper_bound = q3 + 1.5 * iqr
df['volume'] = df['volume'].apply(lambda x: x if lower_bound <= x <= upper_bound else df['volume'].median())
# 计算过去20天的平均成交量
df['avg_volume_20'] = df['volume'].rolling(window=20).mean()
5) 【面试口播版答案】金融数据特征工程是连接原始交易数据与模型输入的关键环节。核心步骤包括特征提取、特征选择、特征变换。比如从原始交易数据(open、high、low、close、volume)中,提取成交量(volume),计算价格波动率(过去20天收盘价标准差),构建技术指标(如MACD)。特征选择方面,用相关性分析或L1正则筛选重要特征。处理异常值时,用IQR方法检测成交量异常,替换为中位数。时序依赖处理,采用滚动窗口(如过去20天)计算特征,确保特征不包含未来信息,比如用滞后变量(如前一天的收盘价)作为特征。这些步骤共同提升特征的有效性,为模型训练提供高质量输入。
6) 【追问清单】
7) 【常见坑/雷区】