异常检测:基准扩展与算法评估
1. 实验设置
1.1 总体情况
为测试算法有效性,将算法应用于特定基准数据集。实验代码可在 指定链接 获取。使用 R 包中的算法实现,包括:
- autoencoder (版本 1.0)
- IsolationForest (版本 0.0 - 26)
- deepnet (版本 0.2),用于 RBM 并稍作调整以实现动态停止准则和学习率自动调整。
每个算法测试一组超参数,对每组超参数运行十次实验,每次使用不同随机种子以减少随机噪声影响,结果取所有运行的平均值。使用“曲线下面积”(AUC)统计量衡量结果。
1.2 超参数设置
稀疏自编码器
- 采用最基本架构,即单隐藏层。
- 主要架构超参数为隐藏节点数 h,取值为 h ∈{5, 10, p/2, p}(p 为数据集特征数,不包括异常标签,p/2 非整数时向下取整),“speech”数据集除外,其 h ∈{5, 10, 25, 50}。
- 学习率 λ 设为 0.001,稀疏参数 ρ 固定为 0.1。
隔离森林
超参数取值按推荐设置。
受限玻尔兹曼机(RBM)
- 隐藏节点数与稀疏自编码器相同。
- 对数据进行预处理,将每个特征离散化为 b 个区间(b ∈{3, 5, 7, 10}),使用等宽分箱,再用温度计编码构造哑变量。
- 学习率 λ 和停止准则动态设置,初始 λ = 0.01,当两个 epoch 间所有观测的自由能上升超过 1% 时,λ 减小 10 倍;当数据集自由能变化小于 1‰ 时停止算法。自由能公式为:
[
\log \sum_{v \in V} p(v) = -\log Z(W, a, b) - \sum_{v \in V} F(v)
]
1.3 数据集
使用的数据集汇总如下表:
| 数据集名称 | 行数 | 列数 | 异常值数量 | 异常值百分比 | U - 指数 |
| — | — | — | — | — | — |
| breast cancer | 367 | 30 | 10 | 2.72 | 0.570 |
| pen global | 809 | 16 | 90 | 11.1 | 0.600 |
| letter | 1600 | 32 | 100 | 6.25 | 0.193 |
| speech | 3686 | 400 | 61 | 1.65 | 0.079 |
| satellite | 5100 | 36 | 75 | 1.49 | 0.308 |
| pen local | 6724 | 16 | 10 | 0.15 | 0.047 |
| annthyroid | 6916 | 21 | 250 | 3.61 | 0.419 |
| shuttle | 46464 | 9 | 878 | 1.89 | 0.675 |
| aloi | 50000 | 27 | 1508 | 3.02 | 0.029 |
| kdd 1999 | 620098 | 29 | 1052 | 0.17 | 0.678 |
对所有数据集特征进行最小 - 最大缩放,公式为:
[
x_{sc} = \frac{x - x_{min}}{x_{max} - x_{min}}
]
各数据集简介:
- Breast Cancer :源自威斯康星乳腺癌数据集,良性患者为正常情况,前 10 个恶性患者为异常值。
- Pen Global :手写数字“8”的特征向量,“0 - 9”中除“8”外各取 10 个观测为异常值。
- Letter :从英文字母中提取特征,部分字母特征为异常值,且添加随机特征增加检测难度。
- Speech :语音识别领域,美国口音为正常,其他口音为异常。
- Satellite :卫星图像特征,特定土壤类型为正常,“棉花作物”和“有植被残茬的土壤”为异常。
- Pen Local :与“Pen Global”同源,除数字“4”的前 10 个观测为异常值外,保留所有数字。
- Annthyroid :医学领域,健康患者为正常,甲状腺功能减退癌患者为异常,前 15 个特征为二进制,后 6 个为连续特征。
- Shuttle :用于 Statlog 项目,与 NASA 航天飞机散热器功能相关,经调整减少异常值数量。
- ALOI :来自阿姆斯特丹对象图像库,部分对象特征为异常值。
- KDD Challenge 1999 :1999 年知识发现与数据挖掘会议挑战数据集,含网络 HTTP 流量数据及攻击观测。
2. 实验结果
2.1 各算法在数据集上的 AUC 表现
| 数据集 | 自编码器 | 隔离森林 | RBM | 基准平均 | 最佳基准 | 最佳算法 |
|---|---|---|---|---|---|---|
| breast cancer | 0.9091 ± 0.0040 | 0.9810 ± 0.0014 | 0.9858 ± 0.00005 | 0.9067 ± 0.0016 | 0.9827 | HBOS |
| pen global | 0.9420 ± 0.0008 | 0.9304 ± 0.0016 | 0.8282 ± 0.0014 | 0.7836 ± 0.0055 | 0.9872 | k - NN |
| letter | 0.7667 ± 0.0042 | 0.6337 ± 0.0052 | 0.5794 ± 0.0026 | 0.7850 ± 0.0078 | 0.9068 | LoOP |
| speech | 0.4716 ± 0.0002 | 0.4699 ± 0.0052 | 0.4715 ± 0.0002 | 0.4936 ± 0.0343 | 0.5347 | LoOP |
| satellite | 0.9057 ± 0.0017 | 0.9479 ± 0.0018 | 0.9060 ± 0.0018 | 0.8734 ± 0.0007 | 0.9701 | k - NN |
| pen local | 0.8346 ± 0.0039 | 0.7828 ± 0.0064 | 0.8220 ± 0.0036 | 0.9129 ± 0.0024 | 0.9816 | LOF |
| annthyroid | 0.5657 ± 0.0010 | 0.6456 ± 0.0058 | 0.5089 ± 0.0026 | 0.6312 ± 0.0123 | 0.9150 | HBOS |
| shuttle | 0.9881 ± 0.0000 | 0.9973 ± 0.0002 | 0.9832 ± 0.0004 | 0.7684 ± 0.0039 | 0.9925 | rPCA |
| aloi | 0.5415 ± 0.0004 | 0.5408 ± 0.0003 | 0.5311 ± 0.0006 | 0.6229 ± 0.0093 | 0.7899 | LoOP |
| kdd 1999 | 0.9718 ± 0.0001 | 0.9656 ± 0.0017 | 0.9990 ± 0.00004 | 0.7926 ± 0.0007 | 0.9990 | HBOS |
2.2 各算法总体性能
从整体性能来看:
- k - NN 和 kth - NN 算法总体表现最佳,但在“annthyroid”数据集上表现低于平均,原因是该数据集的二进制特征对基于距离的算法有较大影响。
- 基于聚类的局部异常因子(CBLOF)算法表现最差,但其变体(uCBLOF 和 LDCOF)性能有显著提升,uCBLOF 在 U - 指数大的数据集上有优势。
- 直方图异常得分(HBOS)算法在 U - 指数大的数据集上表现强,在 U - 指数小的数据集上较弱;局部异常概率(LoOP)算法则相反。
2.3 新算法表现
新添加的三个算法在 U - 指数大的数据集上能找到异常值,常超越当前最佳算法,但在 U - 指数小的数据集上表现不佳。隔离森林算法能较好处理“annthyroid”数据集中的二进制特征,运行时间短且超参数几乎无需调整,是三个新算法中的首选。
2.4 算法时间复杂度
- 标准稀疏自编码器和 RBM 训练一个 epoch 和评分数据的时间复杂度为 O(nph)(n 为观测数,p 为特征数,h 为隐藏节点数)。
- 隔离森林训练和评分时间复杂度为 O(n),与特征数无关。
实际运行时间很大程度取决于训练时达到收敛所需的 epoch 数,隔离森林最快,RBM 比自编码器更快收敛。
2.5 自编码器隐藏节点数与 AUC 关系
通过绘制自编码器隐藏节点数与 AUC 的关系图发现,隐藏节点数少的自编码器更易找到异常值(AUC 值更大),多数数据集使用 5 或 10 个隐藏节点即可。
graph LR
A[实验设置] --> B[超参数设置]
A --> C[数据集准备]
B --> D[稀疏自编码器]
B --> E[隔离森林]
B --> F[受限玻尔兹曼机]
C --> G[数据集介绍]
D --> H[实验结果]
E --> H
F --> H
G --> H
H --> I[各算法AUC表现]
H --> J[总体性能分析]
H --> K[新算法表现]
H --> L[时间复杂度分析]
H --> M[隐藏节点数与AUC关系]
综上所述,不同的异常检测算法在不同类型的数据集上表现各异。在选择算法时,需要综合考虑数据集的特点(如 U - 指数、特征类型等)、算法的性能(如 AUC 值、运行时间等)以及超参数调整的难易程度。对于 U - 指数大的数据集,HBOS、隔离森林等算法可能是较好的选择;对于 U - 指数小的数据集,LoOP 等算法更具优势。同时,简单的算法(如 k - NN、kth - NN)在平均性能上表现出色,而自编码器和 RBM 中较少的隐藏节点数也能保证较好的性能。不过,当前的实验存在一定局限性,数据集数量有限且多为图像特征,缺乏分类特征,后续可对算法的扩展和改进进行进一步研究。
3. 实验结论与思考
3.1 新算法优势
三个新添加的算法在处理 U - 指数较大的数据集时表现出色,常常能超越现有的最佳算法。其中,隔离森林算法在基准测试中的曲线下面积与其他两个新算法相近,但它具有运行时间短、超参数易于设置的优点,并且能很好地处理“annthyroid”数据集中的二进制特征,因此可作为这三个新算法中的首选。
3.2 数据集类型与适用算法
根据实验结果,可将包含异常值的数据集大致分为两类:
- 存在与异常标签相关特征的数据集 :这类数据集中至少有一个特征与异常标签存在相关性。适合的异常检测算法包括 HBOS、rPCA、oc - SVM、η - oc - SVM、自编码器、隔离森林、RBM 和 uCBLOF,三个新算法均属于此类。
- 缺乏单变量相关特征的数据集 :这类数据集不存在与异常标签有明显关联的单变量特征。LOF 类(局部异常因子)算法,如 LOF、LOF - UB、COF、INFLO 和 LoOP 在这类数据集上表现良好。U - 指数可用于将数据集中的异常值分为这两类。
3.3 算法简单性与性能
实验中还发现,算法的简单性往往与强大的性能并存:
- k - NN 和 kth - NN 算法结构简单,在所有数据集的平均性能表现上最佳。
- 相对简单的 HBOS 算法在 U - 指数大的数据集上属于顶级表现者。
- 自编码器和 RBM 中较少的隐藏节点数(即简单的结构)并不会降低性能。
3.4 实验局限性与展望
尽管实验取得了有价值的结果,但也存在一些局限性:
- 数据集方面 :实验使用的数据集数量有限,仅包含十个数据集,且其中大部分是从图像中提取的特征,所有数据集均为表格数据且不包含分类特征。
- 算法方面 :仅测试了三个新算法的最常见实现,每个算法都有值得进一步研究的扩展。例如,隔离森林算法最近允许在特征空间中进行非平行于坐标轴的分割;自编码器可通过增加隐藏层进行扩展,还有适用于大数据集的变体(如变分自编码器、GAN 网络);RBM 可堆叠形成深度信念网络,也存在自编码器和 RBM 的组合形式。
此外,“speech”数据集由于特征数量多(400 个)且 U - 指数低,目前没有算法能在该数据集上表现出色,可作为未来研究的重点。
3.5 算法选择建议
为了更清晰地指导算法选择,以下给出不同情况下的算法推荐:
| 数据集特点 | 推荐算法 |
| — | — |
| U - 指数大,有单变量异常 | HBOS、隔离森林、RBM、自编码器、uCBLOF |
| U - 指数小,无明显单变量异常 | LOF、LOF - UB、COF、INFLO、LoOP |
| 平均性能要求高 | k - NN、kth - NN |
| 处理二进制特征 | 隔离森林 |
graph LR
A[实验结论] --> B[新算法优势]
A --> C[数据集类型与适用算法]
A --> D[算法简单性与性能]
A --> E[实验局限性与展望]
A --> F[算法选择建议]
B --> G[隔离森林首选]
C --> H[单变量相关数据集算法]
C --> I[无单变量相关数据集算法]
D --> J[简单算法优势体现]
E --> K[数据集局限]
E --> L[算法扩展方向]
E --> M[speech数据集研究重点]
F --> N[U - 指数大推荐]
F --> O[U - 指数小推荐]
F --> P[平均性能推荐]
F --> Q[处理二进制特征推荐]
综上所述,异常检测是一个复杂的领域,不同的数据集和任务需要选择合适的算法。在实际应用中,应充分考虑数据集的特点、算法的性能和复杂度等因素,同时不断探索算法的改进和扩展,以提高异常检测的效果。未来的研究可以针对现有实验的局限性,进一步优化算法和数据集的选择,为异常检测提供更有效的解决方案。
超级会员免费看
16万+

被折叠的 条评论
为什么被折叠?



