楼主: 滨滨有利123
624 1

数据分析师的必备能力—样本数据异常值识别的4种经典方法 [推广有奖]

  • 0关注
  • 30粉丝

副教授

24%

还不是VIP/贵宾

-

威望
0
论坛币
198 个
通用积分
25.4545
学术水平
1 点
热心指数
2 点
信用等级
0 点
经验
9596 点
帖子
328
精华
0
在线时间
381 小时
注册时间
2015-4-26
最后登录
2023-9-23

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
对于从事数据分析岗位的小伙伴,日常工作中可能会接触到很多类型的维度数据,而在开展任务的具体实践过程中,需要我们只有具备较好的数据分析能力,才能根据实际业务需求得到有价值的分析结果。在包括业务熟悉、数据理解、逻辑思维等能力的范围内,掌握数据分析的常见算法,是我们必须要掌握的工作能力,例如数据清洗处理、特征加工分析等。

在模型开发过程中,针对建模数据的预处理过程是一项必备环节,数据预处理主要包括缺失值处理、异常值处理、重复值处理等,其目的都是为了获取一份比较完整且合理的样本数据,从而有效支持模型的拟合训练与测试评估。其中,异常值处理是一项比较重要的内容,但在工作实践中,根据已有特征样本数据,如何判断识别异常值是处理异常值的前提条件,因此掌握样本数据异常值的识别方法,对于数据建模或数据分析等工作显得非常有必要。

本文将结合实际业务场景需求,介绍下识别异常值的常用4种方法,分别为箱线图分布、标准差检测、DBSCAN聚类、孤立森林模型。为了便于大家对判断异常值的理解,我们通过具体样例数据进行描述。现通过Python构造一份含有异常值的样本数据,实现代码如图1所示。

[backcolor=rgba(18, 18, 18, 0.5)]​




编辑切换为居中




添加图片注释,不超过 140 字(可选)

                                                                图1 样本构建代码




生成的样本数据集具体如图2所示,共包含10条样本,以及X、Y、Z共3个特征变量。

[backcolor=rgba(18, 18, 18, 0.5)]​




编辑




添加图片注释,不超过 140 字(可选)

                                                                    图2 样本数据集




1、箱线图分布

箱线图可以统计展示一组样本数据的分布情况,具体如图3所示,将数据的下四分位数标为Q1,上四分位数标为Q3,上四分位数与下四分位数的差值Q3-Q1标为IQR,则整个样本数据分布有25%的数据小于Q1,有25%的数据大于Q3,剩余50%的数据集中在Q3-Q1之间。一般情况下,箱线图的上界设定为Q3+1.5*IQR,下界设定为Q1-1.5*IQR。在具体实践过程中,可以将大于箱线图上界,或小于箱线图下界的数值识别为异常值。

[backcolor=rgba(18, 18, 18, 0.5)]​




编辑




添加图片注释,不超过 140 字(可选)

                                                                   图3 箱线图结构




在Python语言中,可以采用DataFrame的boxplot()函数绘制样本数据的箱线图,实现代码为df.boxplot(),其中df为样本数据集。根据图2的样本数据,绘制箱线图如图4所示,从结果可以很直观看出,样本特征X、Y、Z各有1个异常值。由图可知异常值均分布在箱线图上界以上,根据Q3+1.5*IQR进一步推断可知异常值数据分别为X:76、Y:118、Z:141。

[backcolor=rgba(18, 18, 18, 0.5)]​




编辑




添加图片注释,不超过 140 字(可选)

                                                                    图4 样本箱线图




2、标准差检测

当样本数据服从正态分布时,99%的数值与均值的距离应保持在3个标准差之内,95%的数值与均值的距离保持在2个标准差之内。在实际业务场景中,一般认为当数值与均值的距离超过2个标准差时,则认为此数值为异常值。

在Python语言中,根据标准差检测异常值的代码如图5所示,其过程为采用for循环依次对样本数据的每列进行处理,即通过mean()函数与std()函数分别获取均值与标准差,然后将每列数据进行归一化处理(Z-score标准化),最后比较标准化数值与标准正态分布标准差1的大小关系,当前者是后者2倍以上关系时,则认为此数值为异常值,结果会返回布尔值True,否则为False。

[backcolor=rgba(18, 18, 18, 0.5)]​




编辑




添加图片注释,不超过 140 字(可选)

                                                                 图5 标准差检测代码




根据图2的样本数据,通过标准差检测方法来判断异常值,输出如图6所示,可以很直观看出,结果为True的对应数据均代表异常值,也就是样本特征X、Y、Z各有1个异常值,与图2对照可知,异常值数据为X:76、Y:118、Z:141,与箱线图方法结果保持一致。

[backcolor=rgba(18, 18, 18, 0.5)]​




编辑




添加图片注释,不超过 140 字(可选)

                                                                   图6 标准差检测结果




3、DBSCAN聚类

DBSCAN是一种以密度为基础的空间聚类算法,可以用密度的概念剔除不属于任一类别的噪声点(异常值),DBSCAN算法将簇定义为密度相连的点的最大集合,将具有足够密度的区域划分为簇,并可以发现任意形状的簇。DBSCAN是一种无监督学习算法,由于其原理逻辑的特殊性,可作为样本数据异常值的检测方法之一。

DBSCAN算法在模型训练过程中,有2个重要参数需要明确。一个参数是样本最小值min_samples,代表形成聚类簇的样本点最小数量;另一个参数是距离eps,代表同一个聚类簇内样本点之间的最大距离。当某个样本点不在以eps为单位的聚类簇圆内,则此样本点很有可能为异常点。

在Python语言中,通过DBSCAN聚类算法进行异常值检测的代码如图7所示,示例DBSCAN(min_samples=3,eps=3)的参数代表以单位3进行聚类簇画圆,且圆内最小样本数量为3。以下代码是对样本特征X、Y、Z分别进行异常值识别,且异常值判定结果是以数值-1表示。

[backcolor=rgba(18, 18, 18, 0.5)]​




编辑切换为居中




添加图片注释,不超过 140 字(可选)

                                                                 图7 DBSCAN检测代码




通过以上代码的最终检测结果如图8所示,可以很直观看出样本特征X、Y、Z均有1个异常值(-1位置),对应到原始数据分别为X:76、Y:118、Z:141,这与前边箱线图和标准差方法的结果是一致的。

[backcolor=rgba(18, 18, 18, 0.5)]​




编辑切换为居中




添加图片注释,不超过 140 字(可选)

                                                                图8 DBSCAN检测结果

4、孤立森林模型

孤立森林是一种无监督学习算法,采用集成学习决策树思想进行模型拟合训练的,应用于样本异常值检测方面,其判断逻辑的前提,是异常值与正常值的属性差异较大,且异常值类别的样本数量较少。采用孤立森林模型算法来识别异常值,比较适合高维数据集的场景

在Python语言中,孤立森林模型检测异常值的实现过程如图9所示,样例是对样本特征X、Y、Z分别进行异常值判断,且异常值判定结果是以数值-1表示。

[backcolor=rgba(18, 18, 18, 0.5)]​




编辑切换为居中




添加图片注释,不超过 140 字(可选)

                                                             图9 孤立森林检测代码




通过以上代码的最终检测结果如图10所示,其中1代表正常值,-1代表异常值,可以很直观看出样本特征X、Y、Z均有1个异常值,这个结果和前面所介绍方法的检测结果都是相同的。

[backcolor=rgba(18, 18, 18, 0.5)]​




编辑切换为居中




添加图片注释,不超过 140 字(可选)

                                                              图10 孤立森林检测结果




综合以上对样本异常值检测方法的介绍,大家理解到各种方法的核心思想虽然是一致的,但具体形式都有一定区别。例如箱线图和标准差是从统计学角度来判断异常值的,而DBSCAN和孤立森林是通过模型训练角度来识别的,但无论采取哪种方法,结合样本情况与业务场景是最合适的。在实际工作中,一般采用的方法是箱线图分布和标准差检测,大家可以根据具体场景需求而定。

关于本文所提到的样本数据异常的识别方法,实操性的内容,本次番茄风控除此文章,也在知识星球平台准备了相关的实操代码,帮助大家了解相关的实操内容,加入到知识星球,来参与本周番茄风控的【星球打榜赛】作业吧:

[backcolor=rgba(18, 18, 18, 0.5)]​




编辑切换为居中




添加图片注释,不超过 140 字(可选)

....

~原创文章


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:数据分析师 异常值识别 数据分析 样本数据 样本数

沙发
三江鸿 发表于 2022-5-18 21:42:12 来自手机 |只看作者 |坛友微信交流群
感谢分享

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 02:26