Histogram-based Outlier Score (HBOS): A fast Unsupervised Anomaly Detection Algorithm(翻译)

基于直方图的异常值得分(HBOS):一种快速无监督异常检测算法
原文:https://www.dfki.de/web/forschung/publikationen/renameFileForDownload?filename=HBOS-KI-2012.pdf&file_id=uploads_1716
摘要
在无监督的数据集检测过程中,无需对异常集进行先验训练。本文提出了一种基于历史的离群点检测(HBOS)算法,该算法在线性时间内对记录进行评分。它假设特征的独立性,使得它比多元方法快得多,但代价是精度较低。通过对3个UCI数据集和10个标准算法的比较分析表明,该算法可以检测出和现有算法一样可靠的全局异常值,但对局部异常值问题的检测效果较差。在我们的实验中,HBOS比基于聚类的算法快5倍,比基于最近邻的方法快7倍。
1简介
异常检测是在数据集中发现与大多数数据不同的实例的过程。它用于各种应用领域。在网络安全领域中,它被称为入侵检测,在网络通信量或计算机系统调用中发现外围实例的过程,表明系统受到威胁。在取证领域,异常检测也被大量使用,被称为异常检测、欺诈检测、误用检测或行为分析。应用程序包括检测分析信用卡交易的支付欺诈、检测分析金融交易数据的商业犯罪或检测数据泄漏预防(DLP)系统中公司服务器的数据泄漏。此外,异常检测还应用于医学领域,通过监测患者的重要功能,并用于检测复杂系统中的故障,例如在航天飞机发射期间。但是,所有这些应用程序域都有一个共同点,即需要识别正常行为并检测外围实例。这导致异常检测的两个基本假设:

  • 数据中很少出现异常
  • 其特征与正常情况有显著差异。
    从机器学习的角度来看,关于标签的可用性存在三种不同的情况[4]:(1)监督异常检测有一个标记的训练和测试集,这样就可以应用标准的机器学习方法。(2) 半监督异常检测使用仅由正常类组成的无异常训练集。然后,测试集由正常记录和异常组成,它们需要分开。最困难的场景是(3)无监督异常检测,这里只给出一个没有标签的数据集,适当的算法应该只能基于它们的特征值来识别异常值。本文介绍了一种基于直方图估计密度的无监督异常检测算法。
    2相关工作
    无监督异常检测:许多无监督异常检测算法已经被提出,可分为三大类[4]。在实际应用中,基于最近邻的算法似乎是目前使用最多、性能最好的方法[1,2]。在这种情况下,离群值是由它们到最近邻的距离决定的,而存在全局[11]和局部方法。一个非常著名的局部算法是局部离群因子(LOF)[3],许多其他算法都是基于此。尽管一些算法建议加速增强[5,10],但最近邻搜索的基本运行时间是O(n2)。第二类,基于聚类的算法可以快得多。在这里,聚类算法通常计算质心和离群点检测有一个大的距离密集的地区。CBLOF[6]或LDCOF[1]使用k-means作为聚类算法,从而提高了计算速度[2]。第三类包括统计方法,使用参数和非参数模型进行异常检测。参数模型,例如计算高斯混合模型(GMM),通常也非常计算密集,这取决于所使用的参数估计方法。非参数模型,如直方图或核密度估计器(KDE)可用于异常检测,特别是在计算速度非常快的情况下。
    网络安全中的直方图:在网络安全领域,要求离群点检测算法的结果立即可用。此外,要处理的数据集非常大。这就是为什么直方图经常被用作半监督异常检测的密度估计器[8]。如果必须处理多变量数据,则可以计算每个特征的直方图,单独评分,并在最后进行组合[7]。在大多数方法中,直方图的面元宽度是固定的,甚至是人工定义的。
    本文正是基于这一基本思想,提出了一种基于直方图的无监督异常检测算法。此外,我们提出了一种动态仓宽(bin-width)方法来覆盖非常不平衡的长尾(long-tail)分布。
    3基于直方图的离群值得分(HBOS)
    除了网络安全之外,基于直方图的异常值评分对于其他几种异常检测场景也很有意义。虽然它只是一种单变量方法的组合,不能对特征之间的依赖关系进行建模,但是它的快速计算对于大数据集来说非常有吸引力。所提出的HBOS算法允许以一般方式应用基于直方图的异常检测,并且作为RapidMiner的异常检测扩展1的一部分,该算法也是开源的。
    对于每个特征(维度),首先构造一个单变量直方图。如果特征包含分类数据,则对每个分类的值进行简单计数,并计算相对频率(直方图的高度)。对于数值特征,可以使用两种不同的方法:(1)静态面元宽度直方图或(2)动态面元宽度直方图。第一种是标准的直方图构建技术,在值范围内使用k个等宽容器。样本落入每个箱子的频率(相对数量)用作密度(箱子高度)的估计值。动态箱宽的确定如下:首先对值进行排序,然后将固定数量的N/k个连续值分组到单个箱中,其中N是总实例数,k是箱数。因为柱状图中一个箱子的面积代表观察的数量,所以在我们的例子中,所有箱子的面积都是一样的。因为箱子的宽度由第一个和最后一个值定义,并且所有箱子的面积都相同,所以可以计算每个箱子的高度。这意味着,覆盖更大的值范围间隔的箱子高度较小,因此密度较低。但是,有一个例外:在某些情况下,k个以上的数据实例可能具有完全相同的值,例如,如果特征是整数,则必须估计长尾分布。在这种情况下,我们的算法必须允许在同一个bin中有多于N/k的值。当然,这些更大的bins的面积会适当增长。
    HBOS中提供这两种方法的原因是,在实际数据中,特征值的分布非常不同。特别是当值范围有较大的间隔(没有数据实例的间隔)时,固定箱子宽度方法估计密度很差(少数箱子可能包含大部分数据)。由于异常检测任务通常涉及值范围内的此类间隙,这是由于异常值远离正常数据的事实,因此我们建议使用动态宽度模式,特别是在分布未知或长尾的情况下。此外,还需要设置箱子的数量k。一个常用的经验法则是将k设置为实例数N的平方根。
    现在,对于每个维度d,已经计算了一个单独的直方图(不管是分类的、固定宽度的还是动态宽度的),其中每个箱子的高度表示密度估计。然后对直方图进行归一化,使最大高度为1.0。这确保了每个特征与异常值得分的权重相等。最后,使用实例所在箱子的相应高度来计算每个实例p的HBOS:
    在这里插入图片描述
    分数是假定独立于类似[7]的特征的估计密度的倒数的乘法。这也可以看作是离散朴素贝叶斯概率模型的(逆)。与乘法不同的是,我们取基本相同的对数(log(a·b) = log(a)+log(b))的总和,并且应用log(·)不会改变分数的顺序。我们决定应用这个技巧的原因是,它对误差不太敏感,因为浮点精度在极不平衡的分布中会导致很高的分数。
    4评价
    为了定量评估真实世界数据中的HBOS,我们在异常检测社区中常用的三个UCI机器学习数据集上评估了所提出的方法。这些数据集,即乳腺癌数据集和基于pen的(全局和局部)数据集,已经如[1]中所述进行了预处理。通过改变离群值阈值生成接收算子特征(ROC),然后用曲线下面积(AUC)进行比较。表4显示了11种不同离群点检测算法的AUC结果。可以看出,在乳腺癌和pen全局数据集上,HBOS算法与其他算法相比表现相当好。在局部异常检测问题上,由于直方图不能用其密度估计对局部异常点进行建模,导致检测失败。
    在这里插入图片描述
    在这里插入图片描述
    除了比较离群点检测性能外,还比较了算法的运行时间。由于用于评估的标准数据集非常小(例如,pen全局数据集中只有809个实例),因此该实验重复了10000次,平均执行时间仅使用一个线程的AMD Phenom II X6 1100T CPU。全局k-NN方法处理pen全局数据集平均耗时28.5ms,LOF平均耗时28.0ms。一般来说,所有最近邻方法的性能都非常相似,因为该算法中最大的工作量是最近邻搜索(O(n2))。作为一种基于聚类的算法,采用了基于k均值的LDCOF算法。算法以30个随机质心启动一次。使用10个优化步骤,平均运行时间达到20.0ms,使用100个优化步骤(这是我们进行性能比较的默认设置),算法需要30.0ms。我们期望基于聚类的方法在更大的数据集上比基于最近邻的算法快得多。然而,HBOS的速度明显快于两者:动态箱子宽度为3.8毫秒,固定箱子宽度为4.1毫秒。因此,在我们的实验中,HBOS比基于最近邻的方法快7倍,比基于k均值的LDCOF快5倍。在更大的数据集上,速度可能要高得多:在一个由1000000个15维实例组成的非公开数据集上,LOF耗时23小时46分钟,而HBOS仅耗时38秒(动态箱子宽度:46秒)。
    5结论
    本文提出了一种基于非监督直方图的离群点检测算法(HBOS),该算法利用具有固定或动态面元宽度的直方图对单变量特征密度进行建模。然后,使用所有直方图计算每个数据实例的异常得分。与其他算法相比,HBOS算法在固定仓宽的情况下工作在线性时间O(n)内,或者在使用动态仓宽的情况下工作在O(n·log(n))内。评估表明,HBOS在全局异常检测问题上表现良好,但不能检测局部异常值。运行时间的比较也表明HBOS比标准算法快得多,特别是在大数据集上。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值