时间序列数据异常值处理指南:保留、删除还是封顶?
时间序列数据异常值处理指南:保留、删除还是封顶?
在数据分析和机器学习领域,异常值处理是一个既重要又具有挑战性的任务。特别是在时间序列数据中,异常值可能会扭曲分析结果,影响模型的准确性。本文将深入探讨时间序列数据中异常值的处理方法,包括保留、删除和封顶等策略,并提供具体的实现方法和注意事项。
正确处理异常值的重要性
无论在哪个领域,正确处理异常值对于保证我们的研究准确性和可靠性都至关重要。例如,异常值会扭曲集中趋势和离散度的测量值,从而严重扭曲您的统计分析。
显示数据值偏斜分布的直方图示例
研究发现,即使是一个极值也会极大地影响平均值、标准差和相关性。在机器学习中,异常值会导致模型出现偏差和泛化能力差,尤其是在对极值敏感的方法中。
评估异常值的性质
了解异常值的原因和意义
异常值的原因和意义可能有很大差异。异常值可以分为全局异常值(偏离整个数据集)和局部异常值(偏离附近点)。
时间序列数据中的全局和局部异常值
数据包含异常值的原因有很多:可能是由于数据的自然变化、测量误差或数据处理错误。异常值的重要性取决于领域。举个例子:在金融领域,异常值可能表示存在欺诈交易,而在医疗保健领域,异常值可能表示罕见但危急的医疗状况。
确定异常值是合法的还是错误的
确定异常值是否合法或错误是数据分析中的关键步骤。为了识别异常值,可以同时使用统计和机器学习方法,以及领域知识甚至数据质量评估。这意味着检查数据收集和处理方法以确定潜在的错误来源。这可能涉及检查仪器故障、抄写错误或数据损坏。
时间序列数据的特殊注意事项
保留时间结构
时间序列数据由于其固有的时间结构和潜在的季节性,在异常值检测方面面临着独特的挑战。因此,在发现和处理异常时保持时间模式完整非常重要。处理时间序列数据中的异常值时,保留时间序列数据的时间结构至关重要。
异常值还会扭曲自相关模式和趋势,这可能会导致您误解数据的真实结构。
处理季节性异常值
处理季节性异常值可能会有点棘手。区分合法的季节性波动和真正的异常是一个巨大的挑战。
将时间序列数据分解为趋势、季节性和残差成分
季节性分解技术可以帮助将季节性成分与趋势和残差分离,从而有助于异常值检测。时间序列数据集可以分为三个主要部分:
- 趋势:数据的长期发展趋势。
- 季节性:数据内重复的短期循环。
- 残差:去除趋势和季节性成分后的剩余数据部分,其中包括噪音和潜在的异常值。
残差分量突显了数据中的不规则模式。通过消除可预测的趋势和季节性变化,剩下的就是这些分量无法解释的偏差,从而使异常值更加明显。
处理异常值的基本策略
在处理异常值时,研究人员通常面临两种基本策略:保留或删除。
保留异常值
当这些数据点代表真实的(尽管不寻常的)观察结果时,通常最好保留异常值,因为研究人员表示异常值可以为正在研究的现象提供有价值的见解。当保留而不是删除异常值时,您可以应用稳健的统计技术来最大限度地减少它们对分析的影响。
然而,你需要谨慎,因为这些保留的异常值仍然会影响统计测量和模型估计。因此,在你的研究结果中报告保留异常值的存在和处理方式非常重要。
删除异常值
在某些情况下,删除异常值可能是合适的。该领域的现有文献表明,在以下情况下移除是合理的:
- 测量误差:由于测量仪器故障或读数不准确而导致的异常值。
- 抽样误差:由于非代表性的抽样过程而产生的异常值,导致不能反映真实总体分布的极端值。
- 实验误差:由于程序错误、污染或意外情况导致科学实验中的异常值,使数据点变得无关紧要。
- 人为错误:由于数据输入错误而导致的异常值,记录的值远远超出预期范围。
- 数据处理错误:数据预处理或转换步骤中引入的异常值由于计算错误或算法问题而明显不正确。
常见的移除技术包括修剪(移除极值)和封顶/缩尾(用不太极端的值替换极值)。这些方法将在下一节中详细介绍。
异常值处理的封盖(Winsorization)
封顶,也称为 winsorization,是一种通过限制数据集中的极值来处理异常值的技术。该方法旨在减少异常值的影响,同时保留其在数据中的存在。这意味着我们将其值降低到一定限度。
为了使此方法有效,我们需要定义上限和下限。这些界限定义了数据值被视为可接受的范围。有多种方法可以设置这些边界,包括基于标准差或四分位距的方法。边界的选择将影响数据分布。
基于百分位数的上限
基于百分位数的上限为缩尾算法提供了一种更加数据驱动的方法。常见的选择包括第 5/95 百分位数或第 1/99 百分位数,具体取决于所需的保守程度。研究人员表示,基于百分位数的方法通常比固定值上限(如下所述)更为稳健,因为它们适应数据的自然分布。
替代封盖方法
随着数据集变得越来越复杂,已经出现了替代性的上限方法来解决一些异常情况。这些方法提供了设置界限的不同方法,每种方法都有各自的优点和局限性。
固定价值上限
固定值上限涉及设置上限和下限的特定数字阈值。它非常简单且易于理解,尤其是当您借助领域知识了解其局限性时。但请记住,这种方法不是很灵活,并且对于具有不断发展的趋势的时间序列数据集来说它可能是一个缺点。
动态封顶
此方法对于时间序列数据特别有用,因为它允许调整界限以适应不断变化的趋势!研究人员强调,动态封顶需要定期更新和仔细监控才能保持其有效性。
自适应封顶
适应时间序列数据的变化特征至关重要。这种方法可以确保在添加新的数据点和模式演变时,上限仍然有效。自适应上限采用机器学习算法来确定最佳上限点,因为这些方法可以适应复杂的多维数据结构。具体方法包括孤立森林算法和局部异常值因子,可以识别高维空间中的异常值。
处理异常值的注意事项和最佳实践
无论选择哪种方法,都必须:
- 验证上限对数据集的影响
- 确保所选方法符合数据的自然分布和研究目标。
- 透明地记录封盖过程,包括所选方法和界限背后的理由。
虽然保留或删除异常值都是基本策略,但有一种中间立场通常可以兼具两全其美的效果:转换异常值。这种方法涉及对数据应用数学变换以减少异常值的影响,而不是完全丢弃它们。
