异常检测3——常见方法分类
基于统计学
极值分析
往往只对单独纬度进行研究,使用上有很大的局限性【1】
对数据分布进行假设
对异常数据和正常数据进行不同的分布假设,并用EM算法拟合数据。局限性在于假设往往和实际有较大出入,效果一般
基于线性分析
在低纬度上分析数据间的相关性。比如PCA,Factor Analysis等。但是压缩或找到低维嵌入后,数据的可解释性下降。
基于时空
空间关系造成的异常
O点单独看来的情况下是正常点,但是考虑到临近点后是异常点
时间序列上的异常
基于相似性分析
建立在距离度量上的异常检测
如K近邻为原型的
建立在密度分析上的异常检测
如Local outlier factor(LOF)
基于聚类的异常检测
先把人分群,然后把明显跟大伙儿不同的小群体去掉,那这部分小群体就是异常点。利用聚类检测异常点的方法是丢弃远离其他簇的小簇[3]
基于偏差
这种方法的思想是考虑到异常值跟整个数据集通常的特性(general characteristics)不一致,认为异常值是离中心最远的点,当移除这些点时,整个数据集某个特征的方差就会减小。比如一种模型的方法是定义一个smooth factor,它表示的就是当某条数据从整体里移除时,方差(variance)降低多少,一般来说,异常值降低的值会大于正常值。[2]
高维方法
在高维下做异常检测会出现以下问题:
- 随着维度的增加,各个点距离的区分度是很小的;
- 数据很稀疏,几乎所有的点都是离群点;
- 邻近的概念变得没有意义。
针对以上的问题,解决方案如下: - 采样更鲁棒的距离函数,并且在full-dimensional找异常点;
- 在原始子空间的特征空间里找异常点。
基于角度的方法往往在高维空间里会很有效。通常来说如果点o是异常点的话,那么它与其它点的角度都差不多,如果不是异常点,它与其它点的角度就多种多样。[2]
其他
集成异常检测
isolation forest
feature bagging
监督异常检测,半监督异常检测,主动学习
图中的异常检测、网络中的异常检测
参考资料:
[1]机器学习门下,有哪些在工业界应用较多,前景较好的小方向? - 微调的回答 - 知乎
[2]数据挖掘中常见的「异常检测」算法有哪些? - 尼古丁布的回答 - 知乎
[3]数据挖掘中常见的「异常检测」算法有哪些? - 恒仔的回答 - 知乎