单一变量的数据集里大部分都是正常数据,很少有异常点,不过还是需要把它们挑出来的,有没有什么好的异常检测的方法呢?
1个回答
基于模型的异常检测基本就是isolation forest或者 one class svm,也可以考虑autoencoder,kmeans。
单一变量的也可以直接对变量分布做拟合,看数据点在样本中的百分位,百分位很低,或者很高就可以认为是以上点。比如远离中位数3倍IQR以上,或者正态分布的3sigma原则,就是这个道理。
也可以考虑KL-divergence,JS-divergence这些复杂一点的统计指标。
如果是时间维度的单变量,那么就是时间序列的异常检测了,那可以做的就更多了,可以用预测的方法来判断拟合值和实际值的差,差值大的就是异常值了。时间序列的话,也就可以同时考虑周期之类的。
如果是数据是非数值类的,是文本类的,那也是看出现的概率了;如果是时间序列里的分类变量,就可以参考马尔可夫之类的。
SofaSofa数据科学社区DS面试题库 DS面经