InterquartileRange 占据了数据集中的大部分实例

数据挖掘 数据集 数据清理
2022-02-14 08:59:19

我对这个社区很陌生,所以请忽略我的菜鸟。

我有一个包含 2948 个实例的数据集,我尝试使用 Weka 中的 InterquartileRange 过滤器删除异常值。问题是 ExtremeValues 和 Outliers 中“YES”实例的数量分别高达 2947 和 2946。换句话说,我所有的数据都被认为是异常值。

这对我的数据集有什么影响?或者我不是要对这些数据执行 IQR,如果是这样,是否有其他算法可以识别除 IQR 之外的异常值?以及如何对这样的数据集进行回归?

谢谢你。

1个回答

weka 库中的 InterQuartileRangeFilter 使用 IQR 公式将一些值指定为异常值/极值。超出此范围的任何值[Q1k(Q3Q1),Q3+k(Q3Q1)]被认为是某种异常值,其中k是一些常数,并且IQR=Q3Q1.

默认情况下,weka 使用k=3将某事定义为异常值,并且k=32将某物定义为极值(极端异常值)。

该公式保证至少 50% 的值被视为非异常值。拥有一个变量(值的单变量样本),实际上不可能重现您的结果。

但是请注意,此过滤器可以应用于数据框。当像这样应用时,它将认为数据框的任何实例具有至少一个实例值被视为该变量的异常值。

现在,假设您有一个包含 2 个变量的数据框,这些变量完全不相关(独立)。再次考虑到每个变量中只有 10% 的值被认为是异常值,由于独立性,人们可以预期(10.9)2值不会是异常值。如果你有p像你的数据框中这样的变量,你可能希望只有(10.9)k正常值,在那种情况下并不难达到。

您必须考虑两件事。一种是增加异常值的因子,如果通常有太多的值被认为是异常值(理想情况下,您希望以图形方式查看每个变量,并尽可能了解下面的分布)。第二个是检查您是否有许多完全独立的值。第二个提示不能解决您的问题,但可能会为您提供它发生的原因。