every blog every motto: You can do more than you think.
https://blog.csdn.net/weixin_39190382?type=blog
离群点检测,理解起来也比较容易。
同学都考70分,你也考70分,可以。
同学都考90分,你考70分,不可以。
Local Outlier Factor(LOF)是基于密度的经典算法
论文:https://www.dbs.ifi.lmu.de/Publikationen/Papers/LOF.pdf
关于离群点 检测的方法还是比较多,主要有基于统计、聚类、分类、信息论、距离、密度等。
应用比较广泛,有以下:
C1、C2形成了两簇,而o1、o2是两个离群点,我们任务就需要找出他们。
如果基于距离,o2到最近的C1的距离肯可能小于C1内部元素的距离,从而无法正确检测出。如果基于全局密度,很可能出现相同的情况。
所以正确的做法是基于局部密度,这是我们的直观感受,具体怎么做,且看下文。
d(p,o): 表示P和O两点之间的距离
k-distance
距离点p,(按从近到远)第k近的点和p之间的距离,称为点p的k-邻近距离,记为k-distance§。
k-distance neighborhood of p
点p的第k距离邻域 N k ( p ) N_k(p) Nk(p) ,就是的 第k距离以内的所有点,包括第k距离。
因此,p的第k邻域点的个数 ∣ N k ( p ) ∣ ≥ k |N_k(p)| \geq k ∣Nk(p)∣≥k (存在距离p相同距离的点,所以是大于)
reach-distance
注意: 这里需要理解以下。
点o到点p的第k可达距离定义为:
r e a c h − d i s t a n c e k ( p , o ) = m a x ( k − d i s t a n c e ( o ) , d ( p , o ) ) reach-distance_k(p,o) = max( k-distance(o), d(p,o) ) reach−distancek(p,o)=max(k−distance(o),d(p,o))
这里是两个距离选一个最大,和之前在聚类算法中介绍的有点不一样,主要是因为这里多了**“第k”**。
其实也比较好理解:
如下图所示:
local reachability density
密度表示为距离倒数,距离越小,密度越大,反之。
故,点p的局部可达密度表示为:
l r d k ( p ) = 1 / ( ∑ o ∈ N k ( p ) r e a c k − d i s t k ( p , o ) ∣ N k ( p ) ∣ ) lrd_k(p) = 1 / ( { \sum_{o \in N_k(p)} reack-dist_k(p,o) \over |N_k(p)| }) lrdk(p)=1/(∣Nk(p)∣∑o∈Nk(p)reack−distk(p,o))
局部可达密度:平均距离的倒数,平均距离为领域内距离和除以邻域内点数
注意: 由于我们的可达距离是非对称的(你离我最近,但我却不是离你最近的点),所以 可达密度也是非对称的。
local reachability density
有了一个点的局部可达密度,怎么确定这个点是不是离群点呢,很简单,只要和周围点的的可达密度进行比较就可以。
表示为:
L O F k ( p ) = ∑ o ∈ N k ( p ) l r d k ( o ) ∣ N k ( p ) ∣ / l r d k ( p ) LOF_k(p) = { \sum_{o \in N_k(p)} { lrd_k(o) } \over |N_k(p)|} / lrd_k(p) LOFk(p)=∣Nk(p)∣∑o∈Nk(p)lrdk(o)/lrdk(p)
表示:p点领域内点 N k ( p ) N_k(p) Nk(p)的局部可达密度 平均值与p点的可达密度之比。
简单说:周围人考70分,你也考70分,ok;周围人考90分,你考70,不ok。
[1] https://www.cnblogs.com/wj-1314/p/14049195.html
[2] https://blog.csdn.net/wangyibo0201/article/details/51705966
[3] https://zhuanlan.zhihu.com/p/607616813
[4] https://zhuanlan.zhihu.com/p/28178476
[5] https://zhuanlan.zhihu.com/p/37753692
[6] https://zhuanlan.zhihu.com/p/385238291