异常检测(3)HBOS
一、HBOS
HBOS全名为:Histogram-based Outlier Score。它是一种单变量方法的组合,不能对特征之间的依赖关系进行建模,但是计算速度较快,对大数据集友好,其基本假设是数据集的每个维度相互独立,然后对每个维度进行区间(bin)划分,区间的密度越高,异常评分越低。理解了这句话,基本就理解了这个算法。
1.1 HBOS算法流程
1、静态宽度直方图
标准的直方图构建方法,在值范围内使用k个等宽箱,样本落入每个箱的频率(相对数量)作为密度(箱子高度)的估计,时间复杂度:O(n)
注意:等宽分箱,每个箱中的数据宽度相同,不是指数据个数相同。例如序列[5,10,11,13,15,35,50,55,72,92,204,215],数据集中最大值是215,最小值是5,分成3个箱,故每个箱的宽度应该为(215-5)/3=70,所以箱的宽度是70,这就要求箱中数据之差不能超过70,并且要把不超过70的数据全放在一起,最后的分箱结果如下:
箱一:5,10,11,13,15,35,50,55,72;箱二:92;箱三:204,215
2、动态宽度直方图
首先对所有值进行排序,然后固定数量的N/k 个连续值装进一个箱里,其 中N是总实例数,k是箱个数,直方图中的箱面积表示实例数,因为箱的宽度是由箱中第一个值和最后一个值决定的,所有箱的面积都一样,因此每一个箱的高度都是可计算的。这意味着跨度大的箱的高度低,即密度小,只有一种情况例外,超过k个数相等,此时允许在同一个箱里超过N/k值,时间复杂度:O(n×log(n))
还是用序列[5,10,11,13,15,35,50,55,72,92,204,215]举例,也是假如分3箱,那么每箱都是4个,宽度为边缘之差,第一个差为15-5=10,第二差为72-35=37,第三个箱宽为215-92=123,为了保持面积相等,所以导致后面的很矮,前面的比较高,如下图所示(非严格按照规则):
3、算法推导过程
对每个维度都计算了一个独立的直方图,其中每个箱子的高度表示密度的估计,然后为了使得最大高度为1(确保了每个特征与异常值得分的权重相等),对直方图进行归一化处理。最后,每一个实例的HBOS值由以下公式计算: \[ H B O S(p)=\sum_{i=0}^d \log \left(\frac{1}{\operatorname{hist}_i(p)}\right) \] 推导过程: 假设样本 \(\mathrm{p}\) 第 \(\mathrm{i}\) 个特征的概率密度为 pi ( \(p\) ) , 则p的概率密度可以计算为, \(d\) 为总的特征的个数: \[ P(p)=P_1(p) P_2(p) \cdots P_d(p) \] 两边取对数: \[ \log (P(p))=\log \left(P_1(p) P_2(p) \cdots P_d(p)\right)=\sum_{i=1}^d \log \left(P_i(p)\right) \] 概率密度越大,异常评分越小,为了方便评分,两边乘以“-1”: \[ -\log (P(p))=-1 \sum_{i=1}^d \log \left(P_t(p)\right)=\sum_{i=1}^d \frac{1}{\log \left(P_i(p)\right)} \] 最后可得: \[ H B O S(p)=-\log (P(p))=\sum_{i=1}^d \frac{1}{\log \left(P_i(p)\right)} \] PyOD是一个可扩展的Python工具包,用于检测多变量数据中的异常值。它可以在一个详细记录API下访问大约 20 个离群值检测算法。
三、 XGBOD
四、COPOD:用「统计」+「机器学习」检测异常
五、More about Anomaly Detection
那这个异常检测啊,其实也是另外一门学问,那我们课堂上就没有时间讲了,异常检测不是只能用 Aauto-Encoder 这个技术,Aauto-Encoder 这个技术,只是众多可能方法里面的其中一个,我们拿它来当做 Aauto-Encoder 的作业,因为我相信,你未来有很多的机会用得上异常检测这个技术,那实际上有关异常检测更完整的介绍,我们把过去上课的录影放在这边,给大家参考,
Part 1: https://youtu.be/gDp2LXGnVLQ
- 简介
Part 2: https://youtu.be/cYrNjLxkoXs
- 信心分数
Part 3: https://youtu.be/ueDlm2FkCnw
异常检测系统的评估?
no ACC
cost loss设计
RUC
Part 4: https://youtu.be/XwkHOUPbc0Q
Part 5: https://youtu.be/Fh1xFBktRLQ
- 无监督
Part 6: https://youtu.be/LmFWzmn2rFY
Part 7: https://youtu.be/6W8FqUGYyDo
那以上就是有关 Aauto-Encoder 的部分