《异常检测——从经典算法到深度学习》4 基于高斯概率密度异常检测算法

目录

  • 0 概论
  • 1 基于隔离森林的异常检测算法
  • 2 基于LOF的异常检测算法
  • 3 基于One-Class SVM的异常检测算法
  • 4 基于高斯概率密度异常检测算法
  • 5 Opprentice——异常检测经典算法最终篇

4. 基于高斯概率密度异常检测算法

此篇主要介绍以下内容:

  • 基于高斯概率密度异常检测算法概述
  • 基于高斯概率密度异常检测算法应用实例
  • 小结

4.1 算法概述

基本思想: 首先,该算法假设数据集服从高斯分布的,然后再分别计算训练集在空间中的重心, 和方差, 然后根据高斯概率密度估算每个点被分配到重心的概率,进而完成异常检测任务。

特点:

  • 是一种非监督算法
  • 适用于大致服从高斯分布的数据集
  • 不适用于高维特征数据集。样本数目(n_samples) 应该大于特征数目的平方(n_features**2)

注: 该算法应用场景极其有限,在此不做过多介绍。

4.2 应用实例

在sklearn中实现了该算法,官网文档地址

实例1
来自于sklearn官网,立即前往

import numpy as np
from sklearn.covariance import EllipticEnvelope
true_cov = np.array([[.8, .3],
                     [.3, .4]])
X = np.random.RandomState(0).multivariate_normal(mean=[0, 0],
                                                 cov=true_cov,
                                                 size=500)

cov = EllipticEnvelope(random_state=0).fit(X)
# predict returns 1 for an inlier and -1 for an outlier
print(cov.predict([[0, 0],
             [3, 3]]))

print(cov.covariance_)

print(cov.location_)

输出内容如下:

[ 1 -1]
[[0.74118335 0.25357049]
 [0.25357049 0.30531502]]
[0.0813539  0.04279722]

说明:

  • numpy 中的 multivariate_normal函数 即产生多维的高斯分布的数据,这个例子中生产生二维数据集。
  • true_cov 即协方差;在随机生成多维正态分布的时候需要指定 mean 即平均值,cov 即协方差,size 则是随机生成这些数的数目。
  • cov 即生成的模型;predict 返回 1 表示正常数据,返回 -1 表示异常数据。
  • cov.covariance_ 即预测协方差矩阵(Estimated robust covariance matrix);cov.location_ 即预测 Robust 位置(Estimated robust location)

参考文档:
https://scikit-learn.org/stable/modules/generated/sklearn.covariance.EllipticEnvelope.html#sklearn.covariance.EllipticEnvelope
https://scikit-learn.org/stable/modules/outlier_detection.html#outlier-detection

4.3 小结

只是稍微提及一下该算法,基于概率运算的算法的核心应该就是思考数学模型构建过程,但为了给后面的深度学习相关算法留更多时间,就没有再去纠结数学模型相关推导与证明了。根据sklearn官网上的说明,与此算法相关的论文(A Fast Algorithm for the Minimum Covariance Determinant Estimator) 在1999年提出的,希望能把重点放在其他算法上,所以这里只能草草浏览一下,抱歉。

Smileyan
2020年5月28日

你可能感兴趣的:(异常检测)