热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数仓面试,数据分析中异常值检测算法?

这一节来讲下关于数据分析中,异常数据识别的几种算法:k-m

 异常值是我们在数据分析中会经常遇到的一种特殊情况,所谓的异常值就是非正常数据。我们这节来讲下关于数据分析中,异常数据识别的几种算法:k-mean、箱体图法等


        异常值是我们在数据分析中会经常遇到的一种特殊情况,所谓的异常值就是非正常数据。有的时候异常数据对我们是有用的,有的时候异常数据不仅对我们无用,反而会影响我们正常的分析结果。比如在分析银行欺诈案例时,核心就是要发现异常值,这个时候异常值对我们是有用的。再比如,在统计某个城市的平均收入的时候,有人月收入是好几个亿,这个时候这个人就是一个异常值,这个异常值会拉高城市的整体平均收入,因此可能会得到一个不真实的分析结果。

这一篇来分享下,如何识别异常值以及识别到异常值以后该如何处理。


01

箱体图法:

分位数识别

代表的执行方法为箱式图

上四分位数Q3,又叫做升序数列的75%位点
下四分位数Q1,又叫做升序数列的25%位点
箱式图检验就是摘除大于Q3+3/2*(Q3-Q1)
,小于Q1-3/2*(Q3-Q1)
外的数据,并认定其为异常值;针对全量样本已知的问题比较好,缺点在于数据量庞大的时候的排序消耗
R语言中的quantile
函数,python中的percentile
函数可以直接实现。

02


距离识别:

最常用的就是欧式距离
比如:两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的欧氏距离:

可以直观感受的到,图中,距离蓝色B点距离为基准衡量的话,红色A1,红色A2,红色A3为距离较近点,A4为距离较远的异常点。


但是这样看问题会有一个隐患,我们犯了“就点论点”的错误没有考虑到全局的问题,让我在看下面这张图:


还是刚才那张图,橙色背景为原始数据集分布,这样看来A4的位置反而比A1、A3相对更靠近基准点B,所以在存在纲量不一致且数据分布异常的情况下,可以使用马氏距离代替欧式距离判断数据是否离群。


其中,μ
为feature的均值,X
为观察值,Σ
为feature的协方差矩阵
马氏距离除了用来判断点是否异常,也可以用来判断两个数据集相识度,在图像识别,反欺诈识别中应用的也是非常普遍;问题在于太过于依赖Σ
,不同的base case对应的Σ
都是不一致的,不是很稳定

03

K均值聚类:

K均值聚类算法的思路非常通俗易懂,就是不断地计算各样本点与簇中心之间的距离,直到收敛为止,其具体的步骤如下:

(1)从数据中随机挑选k个样本点作为原始的簇中心。

(2)计算剩余样本与簇中心的距离,并把各样本标记为离k个簇中心最近的类别。

(3)重新计算各簇中样本点的均值,并以均值作为新的k个簇中心。

(4)不断重复(2)和(3),直到簇中心的变化趋于稳定,形成最终的k个簇。


       如上图所示,图中蓝色和红色之间形成鲜明的簇,其中每个簇内包含5000个数据。如果数据中存在异常点,目测蓝色的簇可能会包含更多异常,因为数据点相对分散一些。


如上图所示,通过9个子图对Kmeans聚类过程加以说明:子图1,从原始样本中随机挑选两个数据点作为初始的簇中心,即子图中的两个五角星;子图2,将其余样本点与这两个五角星分别计算距离(距离的度量可选择欧氏距离、曼哈顿距离等),然后将每个样本点划分到离五角星最近的簇,即子图中按虚线隔开的两部分;子图3,计算两个簇内样本点的均值,得到新的簇中心,即子图中的五角星;子图4,根据新的簇中心,继续计算各样本与五角星之间的距离,得到子图5的划分结果和子图6中新的簇内样本均值;以此类推,最终得到理想的聚类效果,如子图9所示,图中的五角星即最终的簇中心点。

实现原理:

使用K均值聚类的思想识别数据中的异常点还是非常简单的,具体步骤如下:

  • 利用“拐点法”、“轮廓系数法”、“间隔统计量法”或者“经验法”确定聚类的个数;

  • 基于具体的K值,对数据实施K均值聚类的应用;

  • 基于聚类的结果,计算簇内每个点到簇中心的距离;

  • 将距离跟阈值相比较,如果其大于阈值则认为是异常,否则正常;

#我是媛姐,一枚有多年大数据经验的程序媛,打过螺丝搬过砖,关注数仓,关注分析。愿你我走得更远!



推荐阅读
  • 开源真香 离线识别率高 Python 人脸识别系统
    本文主要介绍关于python,人工智能,计算机视觉的知识点,对【开源真香离线识别率高Python人脸识别系统】和【】有兴趣的朋友可以看下由【000X000】投稿的技术文章,希望该技术和经验能帮到 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • 图灵测试是什么?为什么AlphaGo那么牛却过不了?
    导读:本文将介绍人工智能的检测手段——图灵测试。作者:杜振东涂铭来源:大数据DT(ID:hzdashuju&# ... [详细]
  • 相机标定(一):机器人手眼标定
    hello,大家好,这里是OAK中国,我是助手君。最近有不少小伙伴询问用OAK做机器人项目,正好助手君看到这篇优质好文&# ... [详细]
  • rf框架搭建_RF框架—自动化UI框架解决方案模版
    RF框架—自动化UI框架解决方案模版第一章项目特色基于WEBUI自动化项目企业实战经验总结搭建的属于自己的一套自动化开发脚手架。技术框架选用RobotFramework用于验收测试 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 无损压缩算法专题——LZSS算法实现
    本文介绍了基于无损压缩算法专题的LZSS算法实现。通过Python和C两种语言的代码实现了对任意文件的压缩和解压功能。详细介绍了LZSS算法的原理和实现过程,以及代码中的注释。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 人工智能的诗与远方在不久的将来遇上能够创造无限可能的区块链是什么样的呢?人工智能与区块链结合的智子社区正在慢慢构筑这个生态,智子社区顾问白硕老师又是怎么样看待的呢?自然语言是人类 ... [详细]
  • 中科视拓CTO山世光:如何用X数据驱动AI成长?
    雷锋网AI科技评论按:7月7日,全球人工智能和机器人峰会(CCF-GAIR2017)在深圳如期举办,由CCF中国计算机学会主办、雷锋网与香港中文大学(深圳)承办的这次大会共聚集了来 ... [详细]
  • 人工神经网络ANN转载:神经网络浅讲:从神经元到深度学习 (其他介绍也值得学习)
    神经网络是一门重要的机器学习技术。它是目前最为火热的研究方向--深度学习的基础。学习神经网络不仅可以让你掌握一门强大的机器学习方法,同时也可以更好地帮助你理解深度学习技术。本文以 ... [详细]
author-avatar
廖赞胜
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有