• 非监督异常点检测算法总结——没有想到矩阵分解和编码解码器也是一种思路


    非监督异常点检测算法总结

     

    一、基于密度

    1) d(p,o):两点po之间的距离; 

    2) k-distance:第k距离 

    对于点p的第k距离dk(p)定义如下: 

    p的第k距离,也就是距离pk远的点的距离,如图。 

     

     

    3) k-distance neighborhood of p:第k距离邻域 

    p的第k距离邻域Nk(p),就是p的第k距离即以内的所有点,包括第k距离。 

    因此p的第k邻域点的个数 |Nk(p)|≥k 上图中,p的第k邻域就是圆里面的点,包括边界上的点。

    4) reach-distance:可达距离 

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

    reachdistancek(p,o)=max{k−distance(o),d(p,o)} 

    也就是,点o到点p的第k可达距离,至少o的第k距离,或者为op间的真实距离。 

    这也意味着,离点o最近的k个点,o到它们的可达距离被认为相等,且都等于dk(o) 

    如图,o1p的第5可达距离为d(p,o1)o2p的第5可达距离为d5(o2) 

     

     

    5) local reachability density:局部可达密度 

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

    lrdk(p)=1/(∑o∈Nk(p)reach−distk(p,o)|Nk(p)|)

    表示点p的第k邻域内所有点到p的可达距离的平均数的倒数。 (其实也就是用平均举例的倒数作为密度)

    这个值的含义可以这样理解,首先这代表一个密度,密度越高,我们认为越可能属于同一簇,密度越低,越可能是离群点。如果p和周围邻域点是同一簇,那么可达距离越可能为较小的dk(o),导致可达距离之和较小,密度值较高;如果p和周围邻居点较远,那么可达距离可能都会取较大值d(p,o),导致密度较小,越可能是离群点。 

    6) local outlier factor:局部离群因子 (score)

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

    LOFk(p)=∑o∈Nk(p)lrdk(o)lrdk(p)|Nk(p)|=∑o∈Nk(p)lrdk(o)|Nk(p)|/lrdk(p)

    表示点p的邻域点Nk(p)的局部可达密度与点p的局部可达密度之比的平均数。 

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

    主要是通过比较每个点p和其邻域点的密度来判断该点是否为异常点,如果点p的密度越低,越可能被认定是异常点。至于密度,是通过点之间的距离来计算的,点之间距离越远,密度越低,距离越近,密度越高,完全符合我们的理解。而且,因为lof对密度的是通过点的第k邻域来计算,而不是全局计算,因此得名为“局部”异常因子,这样,对于分散度不同的聚类,lof完全可以正确处理,而不会因为数据密度分散情况不同而错误的将正常点判定为异常点。 

     

     

    二、基于矩阵分解

    思路:选取特征主成分,将原数据映射到主成分坐标系实现降维。再把降维后的数据映射回原数据的坐标系

    主成分:数据差异性大的方向

    先计算不同特征的方差,第一个主成分方向就是方差最大的特征的方向,方差从大到小排列取前N,构成N维新坐标系,

     

     

     

     

     

     

     

     

     

    根据重构之后的数据和原数据比较,得到误差score作为异常点的评价分数

     

     

    三、Replicator Neural Network

     

    输入和输出是一样的,都是每条数据的特征值

    整个流程相当于把数据先压缩再恢复。

    在神经网络传输的时候,中间使用了 tanh 函数和 sigmoid 函数。这个神经网络是训练一个从输入层到输出层的恒等函数(identity mapping),传输的时候从输入层开始压缩数据,然后到了第二个隐藏层的时候开始解压数据。训练的目标就是使得整体的输出误差足够小,整体的误差是由所有的样本误差之和除以样本的个数得到的。

    第二层和第四层的激活函数都是tanh

    第三层是一个阶梯函数,图像如下

     

     

     

      

     参考资料:

    https://zr9558.com/2016/06/23/outlierdetectiontwo/

    https://zr9558.com/2016/06/12/replicator-neural-networks/

     

     

     

     

  • 相关阅读:
    关于深拷贝和浅拷贝的理解
    Oracle数据库入门
    单例模式入门
    oracle存储过程 (还没动手实践、剩余内容找时间在处理、游标还没接触)
    Oracle用户名及默认密码
    oracle数据库怎么创建数据库实例
    Java 强、弱、软、虚,你属于哪一种?
    内存溢出和内存泄漏的区别
    aop中execution 表达式
    JPA 中@Enumerated
  • 原文地址:https://www.cnblogs.com/bonelee/p/9174744.html
Copyright © 2020-2023  润新知