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

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

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

  1. :点 p 和点 o 之间的距离

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

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

  4. reach-distance:可达距离

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

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

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

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

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

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

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

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

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

    1. 如果这个比值接近 1,说明 p 其邻域点密度差不多,p 可能和邻域点输入同一簇;
    2. 如果这个比值越小于 1,说明 p 的密度就高于其邻域点密度,p 为密集点;
    3. 如果这个比值越大于 1,说明 p 的密度小于其邻域点密度,p 越可能是异常点。
    局部异常因子算法 Local Outlier Factor(LOF)_第1张图片
    img

LOF 的思想:

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

sklearn 包:
sklearn.neighbors.LocalOutlierFactor

你可能感兴趣的:(局部异常因子算法 Local Outlier Factor(LOF))