因子预处理 (副本)
由qxiao创建,最终由qxiao 被浏览 1 用户
导语
在机器学习中,很多因子数据必须经过预处理才能参与模型训练。本文简单介绍因子预处理中常见的缺失值处理,极值处理、标准化处理和规范化处理。
用sklearn库处理因子数据
https://bigquant.com/experimentshare/dc9cdc7c5de442a9b744ce1eda48748a
用可视化模块因子分析
通常进行因子分析前,我们需要对因子进行清洗处理,一个典型的处理流程如下:
-
1、去除缺失值
-
2、每日截面数据分位数去极值
-
3、每日截面数据进行行业市值中性化处理
-
4、每日截面数据标准化处理,处理后均值为0
-
5、缺失值填充0值 需要注意的是上述的第2-4步骤,是对数据按日期分组后进行截面数据操作。上述典型流程的可视化建模如下:
https://bigquant.com/experimentshare/5993ab804568415fb8597e4227269e83
表达式引擎函数
(数据处理)
去极值
示例:cut_outliers(return_5)
标准化
将中性化处理后的因子暴露度序列减去其现在的均值、除以其标准差, 得到一个新的近似服从 N(0, 1)分布的序列。 示例:normalize(cut_outliers(return_5))
中性化
均值法:行业中性化处理能去去除因子在行业上的偏好,处理的逻辑是将行业因子值的均值调整为0,得到新的因子值,即因子减去所处行业因子均值。 推荐使用 。
示例:pe_ttm_0 - group_mean(industry_sw_level1_0, pe_ttm_0)
回归法:行业市值中性化:将填充缺失值后的因子暴露度对行业哑变量和取对数后的市值 做线性回归,取残差作为新的因子暴露度。优点:可做任何中性化处理,不只是行业和市值。不足:花费较长时间。 示例:neutralize(normalize(cut_outliers(return_5)), [dummy(industry_sw_level1_0, drop_value=[-1, 0, 110000]), normalize(cut_outliers(log(market_cap_0)))])
小结: 本文首先展示了使用sklearn进行分子预处理,然后展示了可视化模块数据处理流程,以及使用表达式引擎函数处理数据,为大家在进行分子预处理时提供参考。
参考文章:使用sklearn进行数据预处理