异常检测方法

异常检测,是业务场景中的常见需求。就如同其他自然发展的食物,离群点总会出现。无论是基因的突变、抑或是之前系统中蕴含的巨大分歧,这个世界上,异常才是常态,稳定反而是一种稀缺状态。

尽管如此,我们在业务中,还是希望抓住确定性。这已深深印刻在人们的内心。每个人都追求稳定性,同时又追求冒险。在业务中,如何发现异常、如何保证系统稳定,是一个系统长期发展的根本基石。

在异常检测中,一般又分为多种情况讨论。一种是点的异常。如手机上的个别黑点。另一种是群体的异常。例如土地种植中,偶尔的小片区域生长异常。单点的异常往往是孤立的,群体的异常往往有着其特殊性。可能是土壤导致的,也可能就是单纯的风向问题。

而另一种的,我们称之为时间序列的异常。这种异常,往往和上下文有关。注入工业制造中,仪器传回的数据异常。仪器的抖动异常、偏移异常等。

对于异常的处理,有很多种办法。下面用实践,来演示和分析各种方法的异常,权当抛砖引玉之用。

异常检测,其实不一定就是异常。也可能是系统中出现的新模式。对于他们,都可以先当作异常处理。只是后续的业务方向不同,一个是作为不好的东西抛弃或处理;一个是作为新的模式,并入旧的模式中去。1

参考:https://machinelearningmastery.com/model-based-outlier-detection-and-removal-in-python/

1. 模型线性预测,计算偏离程度
2. 孤立森林
3. 最小方差检测(前提:高斯分布)
4. 局部异常因子 
	- [LOF离群因子检测算法](https://zhuanlan.zhihu.com/p/37753692)
sklearn.covariance.EllipticEnvelope : An object for detecting outliers in a
    Gaussian distributed dataset.
sklearn.svm.OneClassSVM : Unsupervised Outlier Detection.
    Estimate the support of a high-dimensional distribution.
    The implementation is based on libsvm.
sklearn.neighbors.LocalOutlierFactor : Unsupervised Outlier Detection
    using Local Outlier Factor (LOF).

参考

关于作者

参考资料:

[1] [https://zh.wikipedia.org/wiki/%E5%BC%82%E5%B8%B8%E6%A3%80%E6%B5%8B](https://zh.wikipedia.org/wiki/异常检测)