使用 PCA 重建误差进行异常检测

机器算法验证 主成分分析 异常值 异常检测
2022-03-31 00:53:38

我想使用 PCA 作为异常检测的方法,但是我想知道这是如何完成的(我prcomp在 R 中使用)。

我真的在质疑这种方法,而不是 R 代码本身。我是否认为我首先在一堆数据上运行 PCA 以使用前k个PC 找到低维子空间表示。然后当新数据可用时,我使用k台 PC 重建它,然后检查错误。因此,如果错误爆发,我知道新数据样本与用于构建 PC 的数据相比没有相同的“结构”......因此它在某种程度上有所不同......即异常。

有人可以告诉我我的假设是否正确吗?

1个回答

是的,你可以这样做。该方法将测量一个新点与其在 PCA 找到的子空间上的投影之间的平方欧几里得距离。它将为沿与主轴正交的方向(下例中的点 1)的异常值提供较大的值,但不会为沿它们的异常值(点 2)提供较大的值。对第二种异常值不敏感可能是可取的或不可取的,具体取决于您的应用程序。重建误差将给出连续值,因此您需要一种方法来选择算作异常值/异常的阈值。

在此处输入图像描述