龙空技术网

浅谈量化中的数据清洗:处理缺失值

大岩资本 92

前言:

当前小伙伴们对“量化数据处理”都比较着重,同学们都想要了解一些“量化数据处理”的相关文章。那么小编同时在网络上网罗了一些对于“量化数据处理””的相关文章,希望我们能喜欢,我们一起来学习一下吧!

上一篇文章中,我们讨论了关于异常值的清洗和假设。本文中,我们再聊聊数据缺失值的清洗和假设。

量化研究模型往往是建基于大量数据,然而,在数据挖掘过程中,经常会遇到挖掘出来的特征数据存在各种异常情况,比如数据异常、数据缺失等。对于这些情况,如果不加以处理,将可能直接影响到最终模型建立后的使用效果,甚至可能导致模型失效。所以对于数据挖掘工程师来说,掌握必要的数据清洗方法是很有必要的!

什么是缺失值

缺失值,指的是缺少的数据,由于部分数据结构是齐整的,比如矩阵,缺失的数据会变成空值(NAN)留在其中,对我们后续的研究带来麻烦。我们需要分析后并去掉它们的影响。对于缺失值,量化中常见的处理方法是填充或删除。我们先分析泛用的清洗方法,再来研究数据的特性,对缺失值进行分类。

处理缺失值的泛用方法——填充

很多算法不支持缺失值数据作为输入。清洗中常见的操作是,遇到缺失值则填充为均值,或将数据特征取zscore变换,使得数据均值为,标准差为1。Zscore变换使得填充均值和填充为是一样,同时也平衡了不同特征之间的大小区别。这样,我们损失了空值的信息,再少了两个自由度,使得数据能较好地被算法支持。

未定义的数据

未定义的数据,往往发生于缺少部分原始数据的情况下。比如我们需要计算指标“60日股价涨幅”,当某公司上市不到60个交易日时,这指标便是未定义的。

这样的未定义数据,我们可以通过两种方法来清洗:

一是重定义指标,如在数据不足的时候,有几个交易日的数据,就用几个。这样没有损失信息,但数据会有较大的失真,日均交易量可以这么处理,涨幅则不合理。

二是将其从数据中删去,会导致能用的数据量减少。

此两种清洗方式,前者隐含了修改后的指标跟原指标近似的假设,而后者隐含的则是模型不应学习到这样的数据,两者各有优劣。

无交易的数据

无交易的数据,往往发生于停牌,或者是一字板的涨跌停的情况下。此时股票没有成交,我们需要理解数据的含义,才能处理这些缺失值。

对于股票价格的缺失值,通常我们假设最近的成交价格仍能够反映股价,用最近的价格去填充股价;或者假设股票会跟同行业表现一致,用同行业的行业指数的变化去替代。这些近似在数学上有合理性,但从信息的角度上看,停牌往往是股票发生了特殊事件,比如财务造假、公司合并等。这些事件对股价的影响有好有坏,我们只有理解了它们,才能更好地去预测股价的变化。

对于成交量的缺失值,我们可以比较直观地设置为,但损失了“不能交易”和“没有交易”两种情况的区分信息。

小结

对缺失值的处理方法多样,很难说哪种方法是最优的,我们可以遵循这样的原则去清洗它们:在算法能接受的情况下,数据尽量保持和原始逻辑一致。我们也可以在研究中尝试不同的清洗方法,寻找更有效的策略。

标签: #量化数据处理