《DataWhale打卡第一天》异常检测(一)

我了解得更多,我知道得就越少

第一次写博客,写得不好,多多提点。

1. 什么是异常检测

     所谓异常检测,就是把不合群的样本挑出来,正如某个班的考试成绩出来了,老师就得额外注意哪些成绩不好得同学。当然对异常的定义也是较为主观的,异常与正常之间界限,量定得尺度,也是由个人决定,还是上面那个例子,多少分算是成绩不好,这就看老师如何看待和决定的了。

1.1 异常的类别

点异常: 只有少数异常值,比如一个班上只有几个考试不及格;
上下文异常: 正常还是异常在不同环境下有不同得定义,就比如一个班成绩大多数90以上,那么低于90分的在这个班就归为成绩不好的一类,但是如果放在其他班,就有可能是成绩优秀一类;
群体异常: 就是在群体集合中出现个例异常的情况,就比如一位同学的成绩为80分,与大多数同学成绩相差不大,但是,其实他是作弊的,亦或者改错分了。

1.2 异常检测任务分类

有监督: 正反例都有标签,这个如果分类不是极度不平衡,使用机器学习的方法就能得到很好的效果了;
无监督: 训练集无标签,聚类;
半监督: 在训练集中只有单一类别(正常实例)的实例,没有异常实例参与训练(这个就是新颖点检测,这个与异常值检测我是被它们搞得糊里糊涂的)。

1.3 应用场景

  • 医疗,做检查时的各种指标
  • 工业,产品各种指标的检测
  • 网络,某个时段访问量、点击量暴增
  • 欺诈、日志等

2. 异常检测常用方法

2.1 传统方法

2.1.1 基于统计学的方法
Pierce’s Criterion

     Pierce’s Criterion,就是定义一个你所能忍受的最大误差,一旦超过这个误差,就定义为异常值。公式: R = ∣ x i − x m ∣ m a x σ R=\frac{|x_i - x_m|_{max}}{\sigma} R=σxixmmax,其中, R R R为自设定的一个界限, x m x_m xm为均值 σ \sigma σ为标准差,下标 m a x max max表示样本与均值的你所能忍受的最大差值。一般会先定义 R R R,然后使用 ∣ x i − x m ∣ m a x = σ R |x_i - x_m|_{max}=\sigma R xixmmax=σR 来表示最大界限。对与这个 R R R,其实是有个Pierce Table,根据估测异常值的个数来选择 R R R的取值,就在这个PDF的第十页,当然,个人认为这个也就看看,帮助不大,还是得凭经验。

Grubb’s Test

     这个是单变量检测,还有一个前提是服从正态分布(这个可以利用偏态系数来判断),根据样本求出均值 μ \mu μ和方差 σ 2 \sigma^2 σ2,然后利用正态分布的公式得出模型,最后在判断每个样本是否符合这个模型。据说,这个只能判断一个异常值,即测试最小值或最大值是否为异常值(这篇文章有提及到)。

Dixon’s Q Test
IQR

这个就是利用四分位来确定上下限,上下限即超出该范围的值即为异常值,这个也可以通过画箱形图来确定出异常值上下限。

2.1.2 线性模型
PCA

这个也是一个不错的方法,在降维的同时也能除去异常值。

2.1.3 基于相似度的方法

     这个像是聚类算法,使用之前需要定义一个距离度量方法,但个人认为这种算有很大的局限性,它只适用那些离群点少、偏离较远的情况,而且计算量又大,对于现在比赛随随便便就数据量几万以上、几百个特征更是一个致命的打击。一个基于相似度的方法就像画了一个或多个圈,圈外的数据即为异常值。这个圈的划分也是趋向于密度集中的区域,假如异常值量不少,大多都聚在一个区域,那这也是个需要考虑的问题。

2.2 集成方法

feature bagging
孤立森林

2.3 机器学习

     对于机器学习方法,常用使用提升树(如gbdt,xgb等),但是异常检测常常是极度不平衡,尽管提升树算法可以设定训练样本的权重,但是这往往会过拟合,训练时超神,测试时瘟神。所以在改变权重的同时,我们应该试试其他方向,例如改变损失函数,定义一种损失函数,而这种损失函数会重点关注负类(异常值)样,Focal就是这样的函数(这里就先不说,等我学会了再写)。

3. 异常检测常用开源库

Scikit-learn
PyOD

  1. 异常检测
  2. Pierce’s Criterion: Eliminating Outliers from Data Sets
  3. Peirce’s criterion for the elimination of suspect experimental data
  4. Grubbs’ Test for Outliers
  5. What is Outlier Detection? - Definition from Techopedia
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值