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

2023-11-08

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

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

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

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

在这里插入图片描述
图2 样本数据集

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

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

2、标准差检测
当样本数据服从正态分布时,99%的数值与均值的距离应保持在3个标准差之内,95%的数值与均值的距离保持在2个标准差之内。在实际业务场景中,一般认为当数值与均值的距离超过2个标准差时,则认为此数值为异常值。
在Python语言中,根据标准差检测异常值的代码如图5所示,其过程为采用for循环依次对样本数据的每列进行处理,即通过mean()函数与std()函数分别获取均值与标准差,然后将每列数据进行归一化处理(Z-score标准化),最后比较标准化数值与标准正态分布标准差1的大小关系,当前者是后者2倍以上关系时,则认为此数值为异常值,结果会返回布尔值True,否则为False。
在这里插入图片描述
图5 标准差检测代码

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

通过以上代码的最终检测结果如图8所示,可以很直观看出样本特征X、Y、Z均有1个异常值(-1位置),对应到原始数据分别为X:76、Y:118、Z:141,这与前边箱线图和标准差方法的结果是一致的。
在这里插入图片描述
图8 DBSCAN检测结果
4、孤立森林模型
孤立森林是一种无监督学习算法,采用集成学习决策树思想进行模型拟合训练的,应用于样本异常值检测方面,其判断逻辑的前提,是异常值与正常值的属性差异较大,且异常值类别的样本数量较少。采用孤立森林模型算法来识别异常值,比较适合高维数据集的场景。
在Python语言中,孤立森林模型检测异常值的实现过程如图9所示,样例是对样本特征X、Y、Z分别进行异常值判断,且异常值判定结果是以数值-1表示。
在这里插入图片描述
图9 孤立森林检测代码

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

综合以上对样本异常值检测方法的介绍,大家理解到各种方法的核心思想虽然是一致的,但具体形式都有一定区别。例如箱线图和标准差是从统计学角度来判断异常值的,而DBSCAN和孤立森林是通过模型训练角度来识别的,但无论采取哪种方法,结合样本情况与业务场景是最合适的。在实际工作中,一般采用的方法是箱线图分布和标准差检测,大家可以根据具体场景需求而定。
关于本文所提到的样本数据异常的识别方法,实操性的内容,本次番茄风控除此文章,也在知识星球平台准备了相关的实操代码,帮助大家了解相关的实操内容,加入到知识星球,来参与本周番茄风控的【星球打榜赛】作业吧:
在这里插入图片描述

~原创文章

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据分析师的必备能力—样本数据异常值识别的4种经典方法 的相关文章

  • 初识运营,明晰运营的学习路径

    关于运营的思考 问题1 运营是什么 运营到底是做什么工作的 如题 到底什么是运营 为什么我们所接触到的很多运营都不太一样 有的运营就是每天追寻互联网热点 加班加点的写文案 有的运营每天就是在不同的群里和成千上万的人唠嗑 有的运营活跃在不同的

随机推荐

  • html获取text输入框中的值

    1 在head中引用jquery 2 定义一个text输入框
  • 指针用作函数参数、指针型函数和函数指针

    指针用作函数参数 以前我们学过的函数参数要么是基本数据类型的变量 要么是类的对象 又或者是数组名 前几讲学到的指针同样可以用作函数参数 指针作函数形参时 我们调用此函数将实参值传递给形参后 实参和形参指针变量将指向相同的内存地址 那么在被调
  • Linux主要命令功能

    1 dmesg 主要用来显示内核信息 使用dmesg可以有效诊断机器硬件故障或者添加硬件出现的问题 另外使用dmesg可以确定你的服务器安装了那些硬件 每次系统重启 系统都会检查所有硬件并将信息记录下来 执行 bin dmesg命令可以查看
  • 第十届蓝桥杯真题-灵能传输

    题目 OJ https www lanqiao cn problems 196 learning 考点 前缀和 贪心 思路 题目意思就是希望通过灵能交换后使得不稳定度最小 假设对a i 进行灵能传输 可以发现前缀和s i 1 和s i 进行
  • Java值传递和引用传递详细说明(详细分析)

    1 形参与实参 我们先来重温一组语法 形参 方法被调用时需要传递进来的参数 如 func int a 中的a 它只有在func被调用期间a才有意义 也就是会被分配内存空间 在方法func执行完成后 a就会被销毁释放空间 也就是不存在了 实参
  • FormData同时传输多个文件和其他数据

    近日有个需求是 在web的对话框中 用户可以输入文本内容和上传附件 附件的数量不限 所有附件总和大小不超过20M 这个实现的方法不止一种 比如之前的后端同事是要求 文件和文本分开传输 文件用一个单独接口上次 上传成功后返回一个id 把这个i
  • 【论文翻译】Iterative Geometry Encoding Volume for Stereo Matching and Multi-View Stereo(CVPR 2023)

    一 论文简述 1 第一作者 Gangwei Xu 2 发表年份 2023 3 发表期刊 CVPR 4 关键词 立体匹配 MVS 几何编码体 GRU 3D卷积 5 探索动机 RAFT的全对相关体缺乏非局部几何知识 难以处理病态区域的局部模糊
  • perp系列之五:perp安装

    perp系列之五 perp安装 版本说明 版本 作者 日期 备注 0 1 ZY 2019 5 29 初稿 目录 文章目录 perp系列之五 perp安装 版本说明 目录 概要 描述 激活 升级 例子 概要 vi conf mk make m
  • Vmware虚拟机设置静态IP地址

    一 安装好虚拟后在菜单栏选择编辑 虚拟网络编辑器 打开虚拟网络编辑器对话框 选择Vmnet8 Net网络连接方式 随意设置子网IP 点击NAT设置页面 查看子网掩码和网关 后面修改静态IP会用到 二 检查宿主机VM8 网卡设置 打开网络和共
  • 欧科云链OKLink:2023年6月安全事件盘点

    一 基本信息 2023年6月REKT和RugPull事件约造成约1000万美元损失 相比上月有显著下降 但安全事件发生数量依旧不减 其中被废弃的Atlantis Loans遭受治理攻击 造成的损失超250万美元 对该协议有过授权的用户需及时
  • Faster R-CNN详解

    Faster R CNN代码实现详解参见 faster rcnn源码详解 樱花的浪漫的博客 CSDN博客 faster rcnn源码 Faster rcnn详细注释版源码地址 faster rcnn源码详细注释版 每一步均有详细批注 深度学
  • 目标检测 实践

    文章目录 0 数据标注via 一 添加图片 二 定义标记类型 Attributes 三 标注 四 导出标注文件 1 模型 1 1 数据准备 1 2 模型训练 1 3 模型使用 1 4 改进方向 0 数据标注via via工具的界面如下图所示
  • python3中多项式创建_利用 Python3 ,实现数学科学计算

    SymPy是符号数学的Python库 旨在用一套强大的符号计算体系完成诸如多项式求值 求极限 解方程 求积分 微分方程 级数展开 矩阵运算等等计算问题 虽然Matlab的类似科学计算能力也很强大 但是Python以其语法简单 易上手 异常丰
  • JDBC和数据库连接池

    JDBC 基本介绍 JDBC原理 模拟JDBC public class MysqlJdbcImp implements JdbcInterface Override public Object getConnection System o
  • 解决element ui select下拉框不回显数据问题

    最近在做一个项目 项目的后端是地址 https github com wangyuanjun008 wyj springboot security git 前端地址是 https github com wangyuanjun008 wyj
  • 用通俗易懂的方式讲解:lightGBM 算法及案例(Python 代码)

    文章目录 1 介绍lightGBM之前 1 1 lightGBM演进过程 1 2 AdaBoost算法 1 3 GBDT算法以及优缺点 1 4 启发 2 什么是 lightGBM 3 lightGBM 原理 3 1 基于Histogram
  • 开源中文大语言模型集合【2023-06-19】

    整理开源的中文大语言模型 以规模较小 可私有化部署 训练成本较低的模型为主 包括底座模型 垂直领域微调及应用 数据集与教程等 自ChatGPT为代表的大语言模型 Large Language Model LLM 出现以后 由于其惊人的类通用
  • Java利用Mybatis进行数据权限控制

    权限控制主要分为两块 认证 Authentication 与授权 Authorization 认证之后确认了身份正确 业务系统就会进行授权 现在业界比较流行的模型就是RBAC Role Based Access Control RBAC包含
  • 经典加法器Verilog实现

    简介 加法器是数字系统最基础的计算单元 用来产生两个数的和 加法器是以二进制做运算 负数是用二进制的补码来表示计算的 减法器也是加法器 8bite并行加法器 并行加法器就是利用多个全加器实现两个操作数各位同时相加 并行加法器中全加器的个数与
  • 数据分析师的必备能力—样本数据异常值识别的4种经典方法

    对于从事数据分析岗位的小伙伴 日常工作中可能会接触到很多类型的维度数据 而在开展任务的具体实践过程中 需要我们只有具备较好的数据分析能力 才能根据实际业务需求得到有价值的分析结果 在包括业务熟悉 数据理解 逻辑思维等能力的范围内 掌握数据分