赞
踩
相关:
此篇主要介绍以下内容:
基本思想: 首先,该算法假设数据集服从高斯分布的,然后再分别计算训练集在空间中的重心, 和方差, 然后根据高斯概率密度估算每个点被分配到重心的概率,进而完成异常检测任务。
特点:
n_samples
) 应该大于特征数目的平方(n_features**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]
说明:
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
只是稍微提及一下该算法,基于概率运算的算法的核心应该就是思考数学模型构建过程,但为了给后面的深度学习相关算法留更多时间,就没有再去纠结数学模型相关推导与证明了。根据sklearn官网上的说明,与此算法相关的论文(A Fast Algorithm for the Minimum Covariance Determinant Estimator) 在1999年提出的,希望能把重点放在其他算法上,所以这里只能草草浏览一下,抱歉。
Smileyan
2020年5月28日
感谢您的 点赞、 收藏、评论 与 关注
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。