异常检测---task 05 高维数据异常检测

异常检测—task 05 高维数据异常检测

 在实际场景中,很多数据集都是高维度的,随着维度的增加,数据空间的大小(体积)会以指数级别增长,使数据变得稀疏,这便是维数诅咒的难题。维数诅咒不止给异常检测带来了挑战,对距离的计算、聚类等都带来了难题。例如基于邻近度的方法是在所有维度使用距离函数来定义局部性。但是,在高维空间中,所有点对的距离几乎都是相等的(距离集中),这使得一些基于距离的方法失效。在高维场景下,一个常用的方法是子空间法。
 集成是子空间思想中最常用的方式之一,可以有效地提高数据挖掘算法精度。集成方法将多个算法或者多个基学习器的输出结合起来。其基本思想是一些算法在某些子集上表现很好,然后集成起来使得输出更加鲁棒。集成方法与基于子空间方法有着天然的相似性,子空间与不同的点集相关,而集成方法使用基学习器来探索不同维度的子集,将这些基学习器集合起来。

Feature Bagging

 Feature Bagging,其基本思想与Bagging相似,只不过对象是Feature。Feature bagging属于集成方法的一种。集成方法的涉及有以下两个主要步骤:
(1) 选择基学习器:这些基学习器可以彼此不同,或者不同的参数设置,或使用不同采样的子数据集。Feature bagging常用LOF算法为基算法。下面是Feature Bagging的通用算法:

  • 给定数据集 S { ( x 1 , y 1 ) , . . . , ( x m , y m ) } S\{{(x_{1},y_{1}),...,{(x_{m},y_{m})}}\} S{(x1,y1),...,(xm,ym)} x i ∈ X d x_{i} \in X^d xiXd,其中标签 y ∈ Y = { C , N C } y\in Y=\{C,NC \} yY={C,NC},其中 C C C为异常点, N C NC NC为正常点
  • 对数据集进行正规化处理
  • For t = 1:T
    (I) 从均匀分布 U ( ⌊ d / 2 ⌋ , d − 1 ) U(\lfloor{d/2}\rfloor,d-1 ) U(d/2,d1)种随机抽样以选取特征子集 N t N_{t} Nt的大小
    (II) 随机选择 N t N_{t} Nt个特征来创建特征子集 F t F_{t} Ft
    (III) 对特征子集 F t F_{t} Ft施加异常检测算法 O t O_{t} Ot
    (iV) 异常检测算法 O t O_{t} Ot的异常检测分数是 A S t AS_{t} ASt
  • 结合异常检测分数向量 A S t AS_{t} ASt和输出一个最终的异常检测分数 A S f i n a l AS_{final} ASfinal
    A S f i n a l = C O M B I N E ( A S t ) , t = 1 , . . . , T AS_{final}=COMBINE(AS_{t}),t=1,...,T ASfinal=COMBINE(ASt),t=1,...,T

(2) 分数标准化和组合方法:不同检测器可能在不同的尺度上产生分数,例如:(a) K近邻检测器输出原始距离分数,而LOF算法会输出归一化值。另外,尽管一般情况是输出较大的异常值分数,但有些检测器会输出较小的异常值分数。因此,需要将来自各种检测器的分数转换为有意义的组合的归一化值。分数标准化之后,还要选择一个组合函数将不同基检测器的得分进行组合,最常见的选择包括平均和最大化组合含函数。下图是两个Feature bagging的组合分数方法:

    • 方法一(广度优先):
    • 给定得分向量 A S t , t = 1 , . . . , T AS_{t},t=1,...,T ASt,t=1,...,T,以及数据集的尺寸 m m m
    • 对所有异常分数向量 A S t AS_{t} ASt进行排序得到 S A S t SAS_{t} SASt以及排序之后的indices I n d t Ind_{t} Indt,也就是说 S A S t ( 1 ) SAS_{t}(1) SASt(1)有最大的得分,而最大得分对应的数据Index是 I n d t ( 1 ) Ind_{t}(1) Indt(1)
    • 取两个空向量 A S F i n a l AS_{Final} ASFinal I n d F i n a l Ind_{Final} IndFinal
    • For i=1:m  (对于m个数据进行迭代)
       For t = 1:T  (每个数据迭代T次)
         若index I n d t ( i ) Ind_{t}(i) Indt(i)是第t个算法对第i个数据进行检测时排在第i个位置且异常得分 A S t ( i ) AS_{t}(i) ASt(i)并不存在于向量 I n d F i n a l Ind_{Final} IndFinal
        在向量 I n d F i n a l Ind_{Final} IndFinal末端插入 I n d t ( i ) Ind_{t}(i) Indt(i)
       在向量 A S F i n a l AS_{Final} ASFinal中插入向量 A S t ( i ) AS_{t}(i) ASt(i)
  • 返回 I n d F i n a l Ind_{Final} IndFinal以及 A S F i n a l AS_{Final} ASFinal
    • 方法二(累计求和);
    • 给定得分向量 A S t , t = 1 , . . . , T AS_{t},t=1,...,T ASt,t=1,...,T,以及数据集的尺寸 m m m
    • 对T轮迭代种所有的异常得分 A S t AS_{t} ASt进行求和:
      A S F i n a l ( i ) = ∑ t = 1 T A S t ( i ) AS_{Final}(i) = \sum_{t=1}^TAS_{t}(i) ASFinal(i)=t=1TASt(i)
    • 返回 A S F i n a l ( i ) AS_{Final}(i) ASFinal(i)
      在这里插入图片描述
      在这里插入图片描述
       基学习器的涉及其组合方法取决于特定集成方法的特定目标。很多时候,我们无法得到数据的原始分布,只能通过部分数据去学习。除此以外,算法本身也可能存在一定问题使得其无法学习到数据的完整信息。这些问题造成的误差分为偏差和方差两种。
  • 方差:是指算法输出结果与算法输出期望之间的五擦汗,描述模型的离散程度,数据波动性
  • 偏差:是指预测值和真实值之间的差距,即使在离群点检测中没有可用的基本真值

孤立森林

 孤立森林算法是周志华教授等人于2008年提出的异常检测算法,事机器学习中少见的专门针对异常检测设计的算法之一。该算法因为算法时间效率高,能有效处理高维数据和海量数据,而无需标注样本,在工业界应用广泛。
 孤立森林属于非参数和无监督的算法,既不需要定义数学模型也不需要训练数据有标签。孤立森林查找孤立点的策略非常高效。假定我们用一个随机超平面来切割数据空间,切一次可以生辰不过两个子空间。然后我们继续用随机超平面来切割每个子空间并循环,直到每个子空间只有一个数据点为止。直观上来讲,那些具有高密度的簇需要被切分许多次才将其分离,而那些低密度的点很快就会被单独分配到一个子空间中。孤立森林认为这些很快被孤立的点就是异常点。
 如何来切这个数据空间是孤立森林的核心思想,因为切割是随机的,为了保证结果的随机性,要用集成的方法来得到一个收敛值,即反复从头开始切,平均每次切的结果。孤立森林由 t t t棵孤立的树组成,每棵树都是一个随机二叉树,也就是说对于树中的每个节点,要么有两个孩子节点,要么一个孩子节点都没有。树的构造方法和随机森林中的构造方法有些类似,流程如下:
  (a) 从训练集中随机选取一个样本子集,放入树的根节点
  (b) 随机指定一个属性,随机产生一个切割点 V V V,即属性 A A A的最大值和最小值之间的某个数
  © 根据属性 A A A对每个样本进行分类,把 A A A中小于 V V V的样本放在当前节点的左孩子中,大于等于 V V V的样本放在右孩子中,这就形成了两个子空间
  (d) 在孩子节点中递归步骤2和3,不断地构造左孩子和右孩子,直到孩子节点中只有一个数据,或树地高度达到了限定高度
获得 t t t棵树之后,孤立森林地训练就此结束,就可以用生成地孤立森林来评估测试数据
  孤立森林异常检测地假设是:异常点一般都是非常稀有的,在树种会很快划分到叶子节点,因此可以用叶子节点到根节点的路径长度来判断一条记录是否是异常的。和随机森林类似,孤立森林也是用构造好的所有树的平均结果形成最终结果的。在训练时,每棵树的训练样本是随机抽样的。从孤立森林的树的构造过程来看,它不需要知道样本的标签,而是通过阈值来哦按段样本是否异常,因为异常点的路径比较短,正常点的路径比较长,孤立森林根据路径的长度来估算每个样本识点的异常程度。其中路径长度的计算方法如下:
在这里插入图片描述
  孤立森林也是一种基于子空间的方法,不同的分支对应于数据的不同局部子空间区域,较小的路径对应于孤立子空间种的低维

总结

  1. feature bagging可以降低方差
  2. 孤立森林的优势在于:
    (a) 计算成本相对于距离或者基于密度的算法更小
    (b) 具有线性的时间复杂度
    © 在处理大数据集上有有时
  3. 孤立森林不适用于超高维数据,因为孤立森林每次都是随机选取维度,如果维度过高,则会存在过多噪音
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值