历史文档

因子预处理 (副本)

由qxiao创建,最终由qxiao 被浏览 2 用户

导语

在机器学习中,很多因子数据必须经过预处理才能参与模型训练。本文简单介绍因子预处理中常见的缺失值处理,极值处理、标准化处理和规范化处理。

用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进行数据预处理

参考文章:标准化、规范化、二值化等多种机器学习数据预处理方法

{link}