第10章 异常检测

10.1 为什么要进行异常检测?

面试官:在处理数据时为什么要做异常检测?

程序员大树:
        异常检测,目标是发现与大部分其他对象不同的对象,这种异常点也称作离群点。有时这些点会影响分类的准确性,给分类造成误差;而有时,这些异常点却又非常重要,甚至需要专门挖掘这些异常点。比如网络攻击的异常检测,通过监视网络异常行为来识别网络攻击。

面试官:那么,异常有哪些成因呢?

程序员大树:
    (1)数据来源于不同的类。异常数据对象,往往来自于一个与大多数数据对象源不同的其他数据对象。比如信用卡欺诈的人,就不属于合法持卡的那类人。
    (2)自然变异。很多数据集都可以用统计分布来建模,比如用高斯分布,大部分数据对象显著地靠近中心,不同于平均对象的可能性很小。一些极端情况下的自然变异,会显著远离中心点,造成异常。
    (3)数据测量或者收集误差。在生产实践中,有可能人测量失误、测量设备存在噪声等。我们应尽可能剔除这类噪声,因为它们会降低数据质量。

10.2 如何进行异常统计?

面试官:如何用统计学的方法,对异常数据做统计?

程序员大树:
    (1)检测一元正态分布中的离群点。
        正态分布可以用记号N(μ,σ)表示,它的两个参数分别是均值和标准差。
        对于一个属性值x的对象,如果是离群点,有,c是选定的常量。
        我们可以根据需要的a大小,反推出c的取值,利用公式:
        其中a是稀有程度,表示错误将来自给定分布的值分类成离群点的概率。
    (2)检测多元正态分布的离群点。
        对多元正态分布,可以类比一元的做法,只不过需将距离换成马氏距离。马氏距离可以看成是欧式距离的一种修正,解决欧式距离在各个维度尺度不一致的问题。
    马氏距离,其中S为数据的协方差矩阵。
    (3)检测混合模型离群点。
        我们可以假设,数据集D包含两种概率分布的对象,M是大多数对象分布,A是异常对象的分布,对于一个数据对象x,总概率分布是:
        
        其中λ是离群点的比例。
        因为正常对象数量比异常的大很多,因此当对象从正常移动到异常时,正常对象变化不大,而异常点的概率却会变化很大。通过不断调整λ,可以确定其分布。
     (4)基于似然的离群点检测。
        设 分别为时刻t正常和异常对象的集合。初始 t=0,, 而 为空。在任意时刻 t,整个数据集的似然和对数似然分别以下两式给出:

其中 分别是 D 、 的概率分布函数。

基于似然的离群点检测算法:
1: 初始化: 在时刻 t=0,令包含所有对象, 而为空。令 为所有数据的对数似然。
2: for   属于的每个点x  do
3:     将 x从移动到,产生新的数据集合
4:     计算D的新的对数似然
5:     计算差
6:     if   >c,其中c是某个阈值 then
7:            将 x分类为异常。 即 保持不变,并成为当前的正常和尼常集。
8:     end if
9: end for



10.3 如何进行基于邻近度的离群点检测

面试官:如何用邻近度,对离群点检测?

程序员大树:
        异常点检测的基本原则是,如果它远离大部分点,那么它是异常的。用邻近性度量,比统计分布更容易些。
        度量是否远离的最简单方法是k-近邻的距离。对同一个簇的相近对象,要找出选定对象与其k个相近对象的距离。
        离群点对K的取值敏感。如果K太小了,则少量临近点可能导致较低离群点得分。如果k太大了,则点数少于k的簇中所有对象可能都成了离群点。所以为了鲁棒性,可以将k-近邻距离定义成,前k个最近邻的平均距离。

10.4 如何进行基于密度的离群点检测?

面试官:如何利用密度,对离群点检测?

程序员大树:
        从密度的角度看,离群点是低密度区域中的对象。所以可以看成,离群点得分是该对象周围密度的逆。
        对于密度的定义为:到k个最近邻的平均距离的倒数。如果该距离小,则密度高。
可以将密度写成:

        其中,N(x,k)是含对象x的k-最近邻集合,|N(x,k)|是集合大小,y是最近邻。
        当然也可以用相对密度表示。相对密度是用点x的密度与它最近邻y的平均密度之比,作为相对密度。

相对密度的离群点检测,给出了离群程度的定量度量,即使数据有不同密度也能很好处理。

面试官:基于邻近度和密度的离群点检测的优缺点?

程序员大树:
一、基于邻近度:
(1)优点:简单;
(2)缺点:1.基于邻近度的方法需要O(m2)时间,大数据集不适用;
                    2. 该方法对参数的选择也是敏感的;
                    3. 不能处理具有不同密度区域的数据集,因为它使用全局阈值,不能考虑这种密度的变化。
二、基于密度:
(1)优点:
                    1. 给出了对象是离群点的定量度量,并且即使数据具有不同的区域也能够很好的处理;
                    2. 与基于距离的方法一样,这些方法必然具有O(m2)的时间复杂度。对于低维数据使用特定的数据结构可以达O(mlogm);(2)缺点:
                    参数选择是困难的。虽然LOF算法通过观察不同的k值,然后取得最大离群点得分来处理该问题,但是,仍然需要选择这些值的上下界。



全部评论

相关推荐

07-15 14:14
门头沟学院 Java
7.10投递7.15感谢信
投递地平线等公司7个岗位
点赞 评论 收藏
分享
程序员小白条:这比例牛逼,750:1
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务