数据分析之数据质量分析和数据特征分析
1.数据质量分析
数据质量分析是数据挖掘中数据准备过程的重要⼀环,是数据预处理的前提,也是数据挖掘分析结论有效性和准确性的基础,没有可信的数据,数据挖掘构建的模型将是空中楼阁。
数据质量分析的主要任务是检查原始数据中是否存在脏数据,脏数据⼀般是指不符合要求,以及不能直接进⾏相应分析的数据。在常见的数据挖掘⼯作中,脏数据包括:
(1)缺失值;
(2)异常值;
(3)不⼀致的值;
(4)重复数据及含有特殊符号(如#、¥、*)的数据。
1.1缺失值分析
数据的缺失主要包括记录的缺失和记录中某个字段信息的缺失,两者都会造成分析结果的不准确,以下从
缺失值产⽣的原因及影响等⽅⾯展开分析。
(1)缺失值产⽣的原因
1)有些信息暂时⽆法获取,或者获取信息的代价太⼤。
2)有些信息是被遗漏的。可能是因为输⼊时认为不重要、忘记填写或对数据理解错误等⼀些⼈为因素⽽遗漏,也可能是由于数据采集设备的故障、存储介质的故障、传输媒体的故障等⾮⼈为原因⽽丢失。
3)属性值不存在。在某些情况下,缺失值并不意味着数据有错误。对⼀些对象来说某些属性值是不存在的,如⼀个未婚者的配偶姓名、⼀个⼉童的固定收⼊等。
(2)缺失值的影响
1)数据挖掘建模将丢失⼤量的有⽤信息。
2)数据挖掘模型所表现出的不确定性更加显著,模型中蕴含的规律更难把握。
3)包含空值的数据会使建模过程陷⼊混乱,导致不可靠的输出。
(3)缺失值的分析
使⽤简单的统计分析,可以得到含有缺失值的属性的个数,以及每个属性的未缺失数、缺失数与缺失率等。
1.2异常值分析
异常值分析是检验数据是否有录⼊错误以及含有不合常理的数据。忽视异常值的存在是⼗分危险的,不加剔除地把异常值包括进数据的计算分析过程中,会给结果带来不良影响;重视异常值的出现,分析其产⽣的原因,常常成为发现问题进⽽改进决策的契机。异常值是指样本中的个别值,其数值明显偏离其余的观测值。异常值也称为离点,异常值的分析也称为离点分析。
(1)简单统计量分析
可以先对变量做⼀个描述性统计,进⽽查看哪些数据是不合理的。最常⽤的统计量是最⼤值和最⼩值,⽤来判断这个变量的取值是否超出了合理的范围。例如,客户年龄的最⼤值为199岁,则该变量的取值存在异常。
(2)3σ原则
如果数据服从正态分布,在3σ原则下,异常值被定义为⼀组测定值中与平均值的偏差超过三倍标准差的值。在正态分布的假设下,距离平均值3σ之外的值出现的概率为P(|x-µ|>3σ)≤0.003,属于极个别的
⼩概率事件。如果数据不服从正态分布,也可以⽤远离平均值的多少倍标准差来描述。(3)箱形图分析
箱形图提供了识别异常值的⼀个标准:异常值通常被定义为⼩于QL-1.5IQR或⼤于QU+1.5IQR的值。QL称为下四分位数,表⽰全部观察值中有四分之⼀的数据取值⽐它⼩;QU称为上四分位数,表⽰全部观察值中有四分之⼀的数据取值⽐它⼤;IQR称为四分位数间距,是上四分位数QU与下四分位数QL之差,其间包含了全部观察值的⼀半。箱形图判断异常值的标准以四分位数和四分位距为基础,四分位数具有⼀定的鲁棒性:多达25%的数据可以变得任意远⽽不会很⼤地扰动四分位数,所以异常值不能对这个标准施加影响。由此可见,箱形图识别异常值的结果⽐较客观,在识别异常值⽅⾯有⼀定的优越性,如图所⽰。
在平常的数据分析过程中可以发现,可能其中有部分数据是缺失的,但是如果数据记录和属性较多,使⽤⼈⼯分辨的⽅法就很不切合实际,所以这⾥需要编写程序来检测出含有缺失值的记录和属性以及缺失率个数和缺失率等。同时,也可使⽤箱形图来检测异常值。R语⾔检测代码如下所⽰。
# 设置⼯作空间
# 把“数据及程序”⽂件夹拷贝到F盘下,再⽤setwd设置⼯作空间
setwd("F:/数据及程序/chapter3/⽰例程序")
# 读⼊数据
saledata <- read.csv(file = "./data/catering_sale.csv", header = TRUE)
# 缺失值检测并打印结果,由于R把TRUE和FALSE分别当作1、0,可以⽤sum()和mean()函数来分别获取缺失样本数、缺失⽐例
sum(complete.cases(saledata))
sum(!complete.cases(saledata))
mean(!complete.cases(saledata))
saledata[!complete.cases(saledata), ]
频率分布直方图和条形图的区别# 异常值检测箱线图
sp <- boxplot(saledata$"销量", boxwex = 0.7)
title("销量异常值检测箱线图")
xi <- 1.1
sd.s <- sd(saledata[complete.cases(saledata), ]$"销量")
mn.s <- mean(saledata[complete.cases(saledata), ]$"销量")
points(xi, mn.s, col = "red", pch = 18)
arrows(xi, mn.s - sd.s, xi, mn.s + sd.s, code = 3, col = "pink", angle = 75, length = .1)
text(rep(c(1.05, 1.05, 0.95, 0.95), length = length(sp$out)),
labels = sp$out[order(sp$out)], sp$out[order(sp$out)] +
rep(c(150, -150, 150, -150), length = length(sp$out)), col = "red")
 该代码以某餐厅的⽇销量额数据作为样本数据,数据⽰例如下:
运⾏上⾯的程序,得到以下结果:
可以看到缺失值个数输出结果为“1”,占样本总量的0.497%,缺失值位于第15⾏,2015年2⽉14⽇销量缺失。分析箱形图可以看出,箭头所⽰的是⼀个标准差的区间。可以看出箱形图中超过上下界的8个销售额数据可能为异常值。结合具体业务可以把865、4060.3、4065.2归为正常值,将60、22、51、6607.4、9106.44归为异常值。
1.3⼀致性分析
数据不⼀致性是指数据的⽭盾性、不相容性。直接对不⼀致的数据进⾏挖掘,可能会产⽣与实际相违背的挖掘结果。在数据挖掘过程中,不⼀致数据的产⽣主要发⽣在数据集成的过程中,可能是由被挖掘数据来⾃于不同的数据源、对于重复存放的数据未能进⾏⼀致性更新造成的。例如,两张表中都存储了⽤户的电话号码,但在⽤户的电话号码发⽣改变时只更新了⼀张表中的数据,那么这两张表中就有了不⼀致的数据。
2.数据特征分析
对数据进⾏质量分析以后,接下来可通过绘制图表、计算某些特征量等⼿段进⾏数据的特征分析。
2.1分布分析
分布分析能揭⽰数据的分布特征和分布类型。对于定量数据,欲了解其分布形式是对称的还是⾮对称的
、发现某些特⼤或特⼩的可疑值,可做出频率分布表、绘制频率分布直⽅图、绘制茎叶图进⾏直观地分析;对于定性数据,可⽤饼形图和条形图直观地显⽰分布情况。
2.1.1.定量数据的分布分析
对于定量变量,选择“组数”和“组宽”是做频率分布分析时最主要的问题,⼀般按照以下步骤:
1)求极差;
2)决定组距与组数;
3)决定分点;
4)列出频率分布表;
5)绘制频率分布直⽅图。
遵循的主要原则有:
1)各组之间必须是相互排斥的;
2)各组必须将所有的数据包含在内;
3)各组的组宽最好相等。
下⾯结合具体实例运⽤分布分析对定量数据进⾏特征分析:
下表是描述菜品捞起⽣鱼⽚在2014年第⼆个季度的销售数据,绘制销售量的频率分布表、频率分布图,对该定量数据做出相应的分析。
(1)求极差
极差=最⼤值-最⼩值=3960-45=3915(元)
(2)决定组距与组数
这⾥根据业务数据的含义,可取组距为500。
组数=极差/组距=3915/500=7.83=>8
(3)决定分点
分布区间如下表所⽰。
(4)列出频率分布表
  根据分组区间得到如下表所⽰的频率分布表。其中,第1列将数据所在的范围分成若⼲组段,其中第1个组段要包括最⼩值,最后⼀个组段要包括最⼤值。习惯上将各组段设为左闭右开的半开区间,如第1个分组为[0,500)。第2列组中值是各组段的代表值,由本组段的上、下限相加除以2得到。第3列和第4列分别为频数和频率。第5列是累计频率,是否需要计算该列视情况⽽定。
(5)绘制频率分布直⽅图
若以2014年第⼆季度捞起⽣鱼⽚每天的销售额为横轴,以各组段的频率密度(频率与组距之⽐)为纵轴,上表的数据可绘制成频率分布直⽅图,如图所⽰。
2.1.2.定性数据的分布分析
对于定性变量,常常根据变量的分类类型来分组,可以采⽤饼形图和条形图来描述定性变量的分布。饼形图的每⼀个扇形部分代表每⼀类型的百分⽐或频数,根据定性变量的类型数⽬将饼形图分成⼏个部分,每⼀部分的⼤⼩与每⼀类型的频数成正⽐;条形图的⾼度代表每⼀类型的百分⽐或频数,条形图的宽度没有意义。
图1和图2是菜品A、B、C在某段时间的销售量分布图。
       图1 菜品销售量分布(饼形图)
              图2 菜品销售量分布(条形图)
2.2对⽐分析
  对⽐分析是指把两个相互联系的指标进⾏⽐较,从数量上展⽰和说明研究对象规模的⼤⼩,⽔平的⾼低,速度的快慢,以及各种关系是否协调。特别适⽤于指标间的横纵向⽐较、时间序列的⽐较分析。在对⽐分析中,选择合适的对⽐标准是⼗分关键的步骤,选择合适,才能做出客观的评价,选择不合适,评价可能得出错误的结论。
对⽐分析主要有以下两种形式:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。