2021-05-14

异常检验——基于统计学方法

 

一、概述

在我看来,基于统计学方法主要还是建立在小概率事件发生的基础之上,即依据训练集去进行分布的估计,如果出现样本数值的概率很小,那么该样本一般为异常值

所以,利用统计学来对异常值进行检测,其主要的一点就是建立模型 这个模型可以是分布,并且大多数数据军服从这个分布。

对于该种理论来说,所有方法大致可以分为两部分:

参数方法:

假定正常的数据对象被一个以参数Θ为参数的分布生成,那么我们可以借助数据训练出分布的具体形式,从而将样本生成的概率算出,若概率很小,那么认定该数值为异常

非参数方法:

非参数方法通常假定参数的个数和性质都是灵活的,不预先确定(所以非参数方法并不是说模型是完全无参的,完全无参的情况下从数据学习模型是不可能的)

 

二 方法概述

(一)非参数

直方图估计法:通过数据建立频率直方图,如此一来,新数据若出现在频率很低的组内,或没有出现在组内,那么可能为异常值

这种方法简单粗暴,但是如何分组是一个很让人头疼的问题,大多数感觉是经验才能得到

(二)HBOS

# 导入相关依赖模块
from pyod.utils.data import evaluate_print,generate_data
from pyod.models.hbos import HBOS
from pyod.utils.example import visualize

# pyod中用于生成toy数据的方法主要是:
# 1、pyod.utils.data.generate_data()
# 2、pyod.utils.data.generate_data_clusters()

# 于是....生成toy example:
contamination = 0.05  # percentage of outliers
n_train = 1000  # number of training points
n_test = 500  # number of testing points
X_train, y_train, X_test, y_test = generate_data(n_train=n_train, n_test=n_test, contamination=contamination)

# 初始化HBOS模型
clf_name = 'HBOS'
clf = HBOS()
clf.fit(X_train)

# get the prediction labels and outlier scores of the training data
y_train_pred = clf.labels_  # binary labels (0: inliers, 1: outliers)
y_train_scores = clf.decision_scores_  # raw outlier scores

# get the prediction on the test data
y_test_pred = clf.predict(X_test)  # outlier labels (0 or 1)
y_test_scores = clf.decision_function(X_test)  # outlier scores

# evaluate and print the results
print("\nOn Training Data:")
evaluate_print(clf_name, y_train, y_train_scores)
print("\nOn Test Data:")
evaluate_print(clf_name, y_test, y_test_scores)

# 可视化展示训练集、测试集异常检测结果
visualize(clf_name, X_train, y_train, X_test, y_test, y_train_pred,
          y_test_pred, show_figure=False, save_figure=True)

 

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值