检测异常值的4种方法和R语言时间序列分解异常检测

全文链接:http://tecdat.cn/?p=3232

什么是异常值?

异常值是与其他观测值有显著差异的数据点。异常值会显著扭曲特征分布和ML工作,因此我们需要观察并形成处理它们的策略。

异常值是如何出现的?

这种观察的出现可能是由以下原因引起的:

  • 测量方法的差异,例如,传感器的灵敏度发生了变化;
  • 实验误差,其中异常值可能是数据收集过程中错误的结果;
  • 引入新方法;
  • 数据收集阶段或数据处理过程中的错误;
  • 或观测值中方差的指示符。

根据异常值的性质,您可以保留它们或排除它们,例如,在实验错误的情况下,您希望删除它们。

异常值的类型有哪些?

有 3 种类型的异常值:

  1. 全局:也称为点异常值。这一观察结果远远超出了整个数据集的范围。例如:在一个班级中,所有学生的年龄都是相同的,但有一个关于500岁学生的记录。

检测异常值的4种方法和R语言时间序列分解异常检测_第1张图片

2. 条件:根据上下文,观察样本被认为是异常的。例如,由于全球经济危机,一个国家的经济表现急剧下降,一段时间内较低的利率成为常态。

 检测异常值的4种方法和R语言时间序列分解异常检测_第2张图片

3. 集合:一组彼此接近且具有接近异常值的观测值。如果点的子集作为聚合值与整个数据集显著偏离,但单个数据点的值本身在上下文或全局意义上都不是异常的:

检测异常值的4种方法和R语言时间序列分解异常检测_第3张图片

为什么识别异常值很重要?

机器学习算法对值的范围和分布很敏感。异常值可能会误导 ML 模型,导致训练时间延长、准确性降低,最终导致结果更差。但是,并非所有ML工作都受到异常值的影响,对于某些算法,您可以安全地忽略它们。

  • 异常值敏感算法:线性回归、逻辑回归、支持向量机
  • 异常免疫算法:所有基于树或复杂的算法

在业务方面,您应该了解为什么存在异常值,并且您可以将其删除。例如,如果您有一个表示人身高的要素,并且其中一个观测值包含一个字符串,而不是一个字符串,其奇怪值如 = “abc cm”,并且由于高度不能包含此类值,因此可以安全地将其删除。

如何检测异常值?

您可以通过使用不同类型的视觉效果轻松发现异常值:

  1. 箱线图

检测异常值的4种方法和R语言时间序列分解异常检测_第4张图片

以下是箱线图显示的内容:

  • 中位数是位于排名序列中心的元素的值。请注意,中位数受异常值的影响较小,因此在中心显示的是中位数,而不是算术平均值。
  • 前四分位数(Q3 或 75%)是分数,只有 25% 的值高于该分数。下四分位数(Q1 或 25%)是低于该值的值,只有 25% 的值。
  • 四分位间距 (IQR) 是 75% 和 25% 四分位数之间的差值。在此范围内有 50% 的值。例如,如果范围很窄,则子组的成员在评估中是一致的。如果它是宽泛的,那么就没有同质的意见。

基于上述情况,您通常可以检测到高于“25% 百分位减去 1.5 x IQR”或低于“75% 百分位加 1.5 x IQR”的异常值,如上图所示。

2. 直方图

检测异常值的4种方法和R语言时间序列分解异常检测_第5张图片

直方图将数值数据聚合到称为条柱的均匀间隔组中,并显示每个条柱中值出现的频率。条形图是使用数字字段或百分比/比率字段创建的。直方图有助于回答以下问题:值的分布是什么,它们在数据集中出现的频率如何?

通过增加和减少条柱的数量,您可以影响数据分析的方式。虽然数据本身不会更改,但其外观可能会更改。选择正确数量的条柱对于正确解释数据中的模式非常重要。太少的条柱可以隐藏一些模式,太多的条柱会夸大小的、可接受的数据更改的价值。正确的条柱数量将揭示在使用箱线图时不可见的模式。

3. 散点图

检测异常值的4种方法和R语言时间序列分解异常检测_第6张图片

散点图显示两个变量之间集合元素的分布。一个独立参数的值沿 X 轴绘制,第二个从属参数的值沿 Y 轴绘制。

散点图上显示的模式可用于查看不同类型的相关性。从点的一般聚类/相关线中显著移除的点称为异常值。

4. Z 得分

检测异常值的4种方法和R语言时间序列分解异常检测_第7张图片

z 得分也可以称为标准分数,用于表示数据相对于均值的分布。此分数表示低于或高于给定总体的标准差数。

z 的值可以在钟形曲线上看到。其中 Z 得分的范围从 -3 个标准差(正态分布曲线的最左边角)到 +3 个标准差(正态分布曲线的最右边角)。在大多数情况下,大于或小于 -+3 的值被标识为异常值。

如何处理异常值?

在数据集中检测到异常值后,您需要执行以下 3 类操作:

  1. 删除异常值。通常,如果您对数据应该落在哪个范围内有很好的了解,例如人们的年龄,则可以删除异常值,您可以安全地删除超出该范围的值。
  2. 更改异常值的值(例如,将值替换为平均值或最大值,例如90%百分位)
  3. 保留它。例如,如果 20%-40% 的数据是异常值,则不应将其视为异常值,而应进一步研究它。

你可能感兴趣的:(检测异常值的4种方法和R语言时间序列分解异常检测)