局部异常因子算法 Local Outlier Factor(LOF)

异常检测 同时被 2 个专栏收录
2 篇文章 0 订阅
3 篇文章 0 订阅

每个样本的异常分数称为局部异常因子。异常分数是局部的,取决于相对于周围邻域的隔离程度。局部性由 k 近邻给出,并使用距离估计局部密度,通过将样本的局部密度与其邻居的局部密度进行比较,可以是被密度明显低于其邻居的样本,这些样本就被当作是异常样本点。

算法原理 & LOF 算法相关定义:

  1. d ( p , o ) d(p, o) d(p,o):点 p 和点 o 之间的距离

  2. k-distance: 第 k 距离,距离点 p 第 k 远的那个距离值,即点 p 距离第 k 个邻居的距离

  3. K-distance neighborhood of p:第 k 距离邻域 N k ( p ) N_k(p) Nk(p),就是点 p 的第 k 距离及之内的所有点,即点 p 的 k 个邻居

  4. reach-distance:可达距离

    点 o 到点 p 的第 k 可达距离定义为:

    reach-distance k ( p , o ) = max ⁡ { k − d i s t a n c e ( o ) , d ( p , o ) } \text{reach-distance}_k(p, o) = \max\{ k - distance(o), d(p,o)\} reach-distancek(p,o)=max{kdistance(o),d(p,o)}

    即点 o 到点 p 的第 k 可达距离,至少是点 o 的第 k 距离,或者为点 o 和点 p 之间的真实距离,这就意味着,离点 o 最近的 k 个点,o 到它们的可达距离被认为相等,且都等于 d k ( o ) d_k(o) dk(o)
    可以这样理解:如果点 p 在点 o 的 k 个邻居中,则 reach-distance k ( p , o ) \text{reach-distance}_k(p, o) reach-distancek(p,o) 为点 o 的第 k 个邻居的距离,否则极为两个点的真实距离;这个距离也是衡量,o 是 p 的邻居,p 是否是 o 的邻居,如果 p 是异常点但 o 是正常点,那么很可能虽然 o 是 p 的邻居,但 o 不是 p 的邻居。

  5. Local reachability density:局部可达密度

    点 p 的局部可达密度表示为:

    lrd k ( p ) = ∣ N k ( p ) ∣ ∑ o ∈ N k ( p ) reach-distance k ( p , o ) \text{lrd}_k(p) = \frac{|Nk(p)|}{\sum_{o \in Nk(p)} \text{reach-distance}_k(p, o)} lrdk(p)=oNk(p)reach-distancek(p,o)Nk(p)

    表示点 p 的第 k 邻域内点到 p 的平均可达距离的倒数。
    分子即为 k,分母为点 p 的 k 个邻居中,每个邻居到 p 的可达距离,若 p 不是它的邻居点的邻居,则 p 的局部可达密度越小,p 是异常点的可能性越大。

  6. local outlier factor:局部离群因子

    点 p 的局部离群因子表示为:

    L O F k ( p ) = ∑ o ∈ N k ( p ) l r d k ( o ) l r d k ( p ) ∣ N k ( p ) ∣ = ∑ o ∈ N k ( p ) l r d k ( o ) ∣ N k ( p ) ∣ / l r d k ( p ) LOF_k(p) = \frac {\sum_{o \in Nk(p)} \frac{lrd_k(o)}{lrd_k(p)}}{|Nk(p)|} = \frac{\sum_{o \in Nk(p)}lrd_k(o)}{|Nk(p)|} / lrd_k(p) LOFk(p)=Nk(p)oNk(p)lrdk(p)lrdk(o)=Nk(p)oNk(p)lrdk(o)/lrdk(p)

    表示点 p 的邻域点 Nk§ 的局部可达密度与点 p 的局部可达密度之比的平均数。
    即对于 p 的每个邻居 o,计算 o 的局部可达密度与 p 的局部可达密度的比值,然后所有邻居求平均。该值越大,说明 p 的异常分数越高,是异常点的可能性越大。

  7. 局部离群因子结果说明:

    1. 如果这个比值接近 1,说明 p 其邻域点密度差不多,p 可能和邻域点输入同一簇;
    2. 如果这个比值越小于 1,说明 p 的密度就高于其邻域点密度,p 为密集点;
    3. 如果这个比值越大于 1,说明 p 的密度小于其邻域点密度,p 越可能是异常点。

    img

LOF 的思想:

通过比较每个点 p 和其邻域点的密度来判断该点是否为异常点,如果点 p 的密度越低,越可能被认定是异常点。至于这个密度,是通过点之间的距离来计算的,点之间距离越远,谜底越低,距离越近,密度越高,而且这里的密度不是基于全局数据,而是基于局部数据。

sklearn 包:
sklearn.neighbors.LocalOutlierFactor

  • 4
    点赞
  • 2
    评论
  • 9
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

评论 2 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页

打赏作者

liuyinglxl

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值