HBOS异常检测算法

原理:

是一种单变量方法的组合,计算速度较快,对大数据集友好,基本假设数据集的每个维度互相独立,对每个维度进行区间划分,区间的密度越高,异常评分越低,即样本数多的区间是异常值的概率小。是一种通常且很有效的无监督算法。

该方法对每一个样本进行异常评分,评分越高,为异常点的可能性越大,评分模型如下:

相关概念:

概率密度:指事件随机发生的几率。概率密度等于一段区间(事件的取值范围)的概率除以该段区间的长度,它的值是非负的,可以很大也可以很小。

概率密度函数,概率密度必须有确定的有界区间,把概率密度看成纵坐标,区间看成横坐标,概率密度对区间的积分就是面积,这个面积就是事件在这个区间发生的概率,所有的面积的和为1。单独分析一个点的概率密度没有意义,必须要有区间作为参考和对比。

正则项:指在模型优化过程中添加到损失函数中的一个额外项,用于控制模型的复杂度。

推导过程:

设样本p的第i个特征的概率密度为,则的概率密度可以计算为(多个特征的概率密度的乘积):

两边取对数:

概率密度越大,异常评分越小,则两边乘以-1:

即:

流程步骤:

1.输入为一组数据,对输入的数据进行处理,构建直方图,得到概率密度的估计。

2.直方图构建的两种方法:

  1. 构建静态宽度直方图。

直方图构建的方法:在值的范围内使用k个等宽箱,样本落入每个箱的频率作为密度的估计,以一组数据为例,设一组数据为,将该组数据从小到大排序,得到数据集,在数据集中,最大值为231,最小值为14,将该组数据分为7份,则求得每个箱的宽度为,所以箱体的宽度是31,要求相中数据之差不能超过31,并且将不超过31的数据放在一起,得到的区间为,分箱结果如下图:

  1. 动态宽度直方图(也是原算法作者当时提出的一种直方图宽度改进方法)

首先对数据中所有的值进行排序,固定数量的某N/k个连续纸装进一个箱里,其中是N总实例数,k是箱个数,直方图的箱面积表示实例数,箱的宽度是由箱中第一个值和最后一个值决定的,所有箱的面积都一样。每一个箱的高度是可计算的,跨度大的箱的高度低,密度小。一种例外情况:若超过k个数相等,此时允许在同一个箱里超过N/k值

还是用数据举例,分4箱,即k=3,每箱是3个,为了保持面积相等,跨度大的区间高度会很矮,如下图所示:

3.根据直方图中每个宽度的特征值频数来估计特征量的概率密度,对其标准化后使得直方图最大高度为1,则每个直方图的高度表示单特征变量的概率密度,概率密度越大。异常评分越小。得到数据的概率密度估计后,从而根据公式

得到数据的异常评分HBOS

参数设置

Alpha:防止边缘溢出的正则项,经验值取0.1。

Tol:当数据点落在箱子外时的宽容度,经验值取0.5。

Contamination:用于设置异常点的比例,经验值取0.1。

4.设置上述参数后,根据数据点的异常评分HBOS对数据进行异常检测。

例如,异常点的比例为0.1,则对数据集中的数据进行异常评分后,得到每个数据的HBOS值,则前10%的HBOS值对应的数据点为异常数据点。

输出为异常数据点。

适用场景:

  1. 各因素之间没有相关关系

比如研究一个人的健康情况是否有异常,影响因素有身高和体重,但是身高和体重有相关关系,用HBOS检测不太合适。

  1. 样本维度低的大数据场景

算法优缺点

优点:原理简单,复杂度低。

缺点

  1. 没有考虑数据在上下文中的异常情况

如下图,只看温度大小的话,t1和t2这两个时刻的温度都是正常的,但从整体上来看,t2这里的变化就不正常,这种情况用HBOS就检测不到t2这种异常情况。

  1. 存在掩码效应,当一个数据的异常程度远大于另一个数据的异常程度时,异常程度较小的数据可能检测不出来。例如家庭的月用电量通常几百度电左右,但数据中存在一个用了几千度的数据,还存在一个用了几万度的数据,在使用HBOS算法对用电量进行异常检测时,能检测出来这个几万度电的异常,但是可能检测不出来这个几千度电这个数据。
  2. 适用于在一个范围内变化的数据,不适用于带趋势的数据。例如检测一个场景中的温度异常,温度是在20-25℃之间变化的,就可以用HBOS检测温度数据出现的概率计算不同温度的异常得分,但如果是连续增长的,比如数据从10增长到100,就可能存在每个数据出现的概率都比较小,导致每个数据计算出来的异常得分都比较大。
  3. 高维情况下效果不佳。
  4. 特征互相独立的条件比较强。
  5. 在全局异常检测问题上表现良好,但在局部异常的检测上效果一般。

论文分析:

论文:《 Histogram-based Outlier Score (HBOS): A fast Unsupervised Anomaly Detection Algorithm 》

论文中提出了基于直方图的无监督异常检测算法-HBOS算法,并且提出了动态宽度的算法以适应不均衡的长尾分布。

论文作者在提出HBOS算法的时候就针对直方图区间长度进行了改进,就是上述的直方图的第二种构建方法。

论文中的直方图构建改进方法在上述步骤中已经详细解释,不做过多赘述。

原算法是基于网络安全域的数据进行异常检测,同时作者提出可以在其他领域中应用,由于现实中的数据特征值分布有较大的不同,作者在构建直方图的方法上提出了一种新的方法,好适应不均衡的长尾分布的数据。并将HBOS和其他异常数据检测的算法的性能进行比较,其中AUC是作者设置的用来进行算法之间互相比较的参数,可在表格中看到HBOS算法在乳腺癌和pen-based的全局数据处理效果较好,而在pen-based的局部数据异常数据处理效果较差。

原文作者更推荐使用动态直方图,尤其是不确定数据以及长尾数据。出处:

选择使用动态直方图的原因:因为异常值数据通常与正常的数据范围较远(由于离群点总是远离正常数据的原因)。在使用固定宽度的直方图时,是通过数据落入箱中的概率进行概率密度估计的,而原文中提到的动态bin宽度的直方图构建方法中,如果一个区间的第一个数据和最后一个数据相差较大(符合异常数据远离正常数据区域的特征),则这个bin的宽度就会变大,为了保持面积相同,箱的高度就会变低,即概率密度变小,按照上述的HBOS的计算方法,对应的HBOS评分就会变大,即对应数据点的异常变大。

根据上述异常分析的结果,则针对直方图宽度的改进对HBOS算法的异常检测效果有较好的提升。可根据实际情况选用其他方法对直方图宽度进行改进。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值