在运行时使用局部异常值因子分数来检测异常值

数据挖掘 聚类 异常检测 离群值
2022-02-26 22:25:03

我正在使用 LOF(本地异常值因子)来检测数据中的异常值。我得到 LOF 分数作为离群距离。这种无监督学习无助于在运行时检测异常值。所以我想用我的数据点和 LOF 分数来建立一个监督模型[回归/分类]。

我的问题是哪一个应该是
1)分类(取 LOF 分数的截止值并在具有二进制变量之后,建立分类模型)并使用此分类模型在运行时预测异常值。

甚至在运行时如何使用任何聚类/异常检测(使用聚类)?任何指导都会有所帮助。

2个回答

您应该找到 LOF 分数的适当阈值,高于该阈值的点将被视为异常值。通常,分数低于 1 的点被认为是正常的(非异常值),但高于 1 的阈值将点视为异常值取决于数据集。

如果您有一个带有异常点标记的数据集,那么您可以使用它来微调阈值,以便在误报率(标记为异常点的点之外,正常点的分数)之间获得可接受的折衷,和召回(在所有实际异常值中,被标记为异常值的部分)。

在运行时,如果新点被添加到您的数据集中,那么点之间的局部密度和 LOF 分数可能会发生变化,并且应该重新计算这些。但是,您确定为最佳的 LOF 分数阈值应继续适用,并且仅需要在更长的时间段内重新访问。

您可以在线使用 LOF。

对于所有训练数据,计算并存储值lrd

当你得到一个新样本时,找到它的邻居。根据与邻居及其孩子的距离,您可以估计新数据点的 LOF。

如果您现在加倍努力来更新现有点的 lrd 值,那么您将获得可更新的 LOF。但这可能不值得付出努力。

Pokrajac, D.、Lazarevic, A. 和 Latecki, LJ(2007 年 3 月)。数据流的增量局部异常值检测。在计算智能和数据挖掘中,2007 年。CIDM 2007 年。IEEE 研讨会(第 504-515 页)。IEEE。