使用回归的异常值检测

机器算法验证 回归 异常值
2022-03-19 20:18:14

回归可以用于异常值检测。我知道有一些方法可以通过删除异常值来改进回归模型。但这里的主要目的不是拟合回归模型,而是使用回归找出谎言

2个回答

使用回归查找异常值的最佳选择是使用稳健回归。

异常值可以通过两种方式影响普通回归:

首先,在 x 值附近的 y 方向上的极端异常值x¯可以影响该区域的拟合,就像异常值可以影响平均值一样。

其次,在 x 空间中的“外围”观察是一个有影响的观察- 它可以将线的拟合拉向它。如果它足够远,这条线将通过影响点:

在此处输入图像描述

在左边的图中,有一个影响很大的点,它把这条线从大量数据中拉了出来。在右边的情节中,它被移得更远了——现在这条线穿过了这个点。当 x 值达到极值时,当您上下移动该点时,线也会随之移动,穿过其他点的平均值并穿过一个有影响的点。

一个与其余数据完全一致的影响点可能不是什么大问题,但是与其余数据的一条线相距甚远的点会使这条线适合它,而不是数据。

如果你看右边的图,红线 - 最小二乘回归线 -根本没有将极值点显示为异常值 - 它的残差为 0。相反,最小二乘线的大残差在数据的主要部分!

这意味着您可以完全错过异常值

更糟糕的是,对于多元回归,x 空间中的异常值对于任何单个 x 变量来说都不是特别不寻常。如果有这种可能性,那么使用最小二乘回归可能是一件非常危险的事情。

稳健回归

如果你拟合了一条稳健的线——尤其是一条对有影响力的异常值稳健的线——比如第二张图中的绿线——那么异常值的残差就很大。

这种情况下,您有一些希望识别异常值 - 它们将是在某种意义上不接近线的点。


去除异常值

您当然可以使用稳健的回归来识别并消除异常值。

但是一旦你有一个稳健的回归拟合,它已经不受异常值的严重影响,你不一定需要删除异常值——你已经有了一个很好的拟合模型。

回归可用于异常值检测。

是的。这个答案和 Glen_b 的答案解决了这个问题。

这里的主要目的不是拟合回归模型,而是使用回归找出谎言

基于 Roman Lustrik 的评论,这里是使用(多元线性)回归查找异常值的启发式方法。

假设您有样本量n. 然后,执行以下操作:

  1. 拟合回归模型n例子。记下它的残差平方和 rtotal.

  2. 对于每个样本 i,在 n-1 个示例(不包括示例 i)上拟合回归模型,并记下相应的残差平方和误差ri.

  3. 现在,比较rirtot对于每个i, 如果ri<<rtotal, 然后i是候选异常值。

将这些候选离群点放在一边,我们可以用减少的样本再次重复整个练习。在算法中,我们在数据中挑选出以不好的方式影响回归拟合的示例(这是将示例标记为异常值的一种方式)。